方法1:
函式名()
方法2:
function 函式名()
#!/bin/bash
function fun1()
fun1 ##呼叫函式
[root@server ~]# cat function.sh
#!/bin/bash
function fun1()
count=1
while [ $count -le 5 ]
do fun1
count=$[ $count + 1 ]
done
echo "end of loop"
fun1
echo "end of script"
[root@server ~]# sh function.sh
i am a boy~
i am a boy~
i am a boy~
i am a boy~
i am a boy~
end of loop
i am a boy~
end of script
1)預設退出狀態碼:預設情況下,函式的退出狀態碼是函式中最後一條命令返回的退出狀態碼
2)使用return命令
shell使用return命令來退出函式並返回特定的退出狀態碼
[root@server ~]# cat return.sh
#!/bin/bash
function db1()
db1echo "the new value is $?"
[root@server ~]# sh return.sh
enter a value:6
doubling the value...
the new value is 12
函式名必須是唯一的,如果重新定義了函式,新的函式會覆蓋舊的函式
函式不能直接從命令列獲取指令碼的引數值
將函式的輸出儲存在shell變數中,可以獲得任何型別的函式輸出,並將其儲存到變數中
可以向函式中傳遞引數函式名會在$0變數中定義,函式命令列上的任何引數都會通過$1,2定義
,2定義,
2定義,
#來判斷傳給函式的引數數目
全域性變數: 任何地方都生效的變數,預設情況下,指令碼主體內定義全域性變數,函式內可以用,函式外也可以用
[root@server ~]# vim overall.sh
#!/bin/bash
function fun1()
temp=4
value=6
fun1
echo "the result is $result"
if [ $temp -gt $value ];then
echo "temp is larger"
else
echo "temp is smaller"
fi[root@server ~]# sh overall.sh
the result is 22
temp is larger
區域性變數定義方法: local value
[root@server ~]# vim local.sh
#!/bin/bash
function fun1()
temp=4
value=6
fun1
echo "the result is $result"
if [ $temp -gt $value ];then
echo "temp is larger"
else
echo "temp is smaller"
fi[root@server ~]# sh local.sh
the result is 22
temp is smaller
shell 函式與內建變數
傳遞到指令碼的引數個數 以乙個單字串顯示所有向指令碼傳遞的引數 指令碼執行的當前程序id號 後台執行的最後乙個程序的id號 與 相同,但是使用時加引號,並在引號中返回每個引數。顯示shell使用的當前選項,與set命令功能相同。顯示最後命令的退出狀態。0表示沒有錯誤,其他任何值表明有錯誤。顯示傳參的...
shell 函式與內建變數
傳遞到指令碼的引數個數 以乙個單字串顯示所有向指令碼傳遞的引數 指令碼執行的當前程序id號 後台執行的最後乙個程序的id號 與 相同,但是使用時加引號,並在引號中返回每個引數。顯示shell使用的當前選項,與set命令功能相同。顯示最後命令的退出狀態。0表示沒有錯誤,其他任何值表明有錯誤。顯示傳參的...
shell中變數的變數與eval命令
shell 中經常會用到變數的巢狀的情況。比如,單個或多個變數的值作為變數名,再對該變數名取 獲取其內部的變數的情況,這種指令碼寫起來很難搞,還好有eval 命令方便我們處理這種情況。便於理解,先來乙個示例 bin bash a my b site my site my site www.361wa...