一.函數定義
#!/bin/sh
#func1.sh
hello() ##函數定義
{
echo "Hello there today's date is 'date +%Y-%m-%d' "
#return 2 ###返回值其實是狀態碼,只能在[0-255]范圍內
}
echo "now going to the function hello"
hello
#echo $? 獲取函數的return值
echo "back from the function"
函數調用:function hello() 或 function hello 或 hello
注意:1.必須在調用函數地方之前,先聲明函數,shell腳本是逐行運行,不會像其它語言一樣先預 編譯
2.函數返回值,只能通過$?系統變量獲得,可以顯示加:return返回,如果不加,將以最后 一條命令運行結果,作為返回值。return后跟數值n(0-255)
腳本高度:sh-vx helloWorld.sh或者在腳本中增加set -x
二.函數參數
#!/bin/bash
#fun1.sh
funWithParam(){
echo "第一個參數為 $1!"
echo "第二個參數為 $2!"
echo "第十個參數為 $10!"
echo "第十個參數為 ${10}!"
echo "第十一個參數為 ${11}!"
echo "參數總數有 $# 個!"
echo "作為一個字符串輸出所有參數 $* !"
}
funWithParam 1 2 3 4 5 6 7 8 9 34 73
注意:$10不能獲取第十個參數,獲取第十個參數需要${10},當n>=10 時,需要使用${n}來獲取參數。
三.跨腳本調用函數
假如上述的腳本文件fun1.sh保存在此路徑: /root/fun1.sh,則可在腳本fun_other.sh中調用腳本fun1.sh中的函數
#!/bin.bash
#fun_other.sh
. /root.fun1.sh ##注: . 和/之間有空格
# 或者source /root/fun1.sh
funWithParam 11 22 33 44 55 66 77 88 99 100 101