bash函數使用


一、bash函數定義及調用

在寫c語言的時候,我們使用字符串數組存儲命令行參數(argv[])。同樣,在編寫Bash腳本的時候,也使用命令行參數。在Bash函數中也可以使用參數,特殊的是,Bash中的函數是沒有參數列表的,例如

#定義
foo() {
statements
}
#調用
foo

這樣便完成了一個函數的定義,但是沒有任何的形參名稱,這是由於Bash中特殊的參數傳遞方法所致。

 

二、傳參(命令行參數)

當一個函數被調用時,腳本程序的位置參數($* $@ $#參數個數 $1 $2 $?上一條獨立命令運行結果 )等會被替換為函數的參數。

 

三、返回值

通常情況下Bash的函數是很少需要返回值的,但是有的時候需要,比如確定一個函數是否被成功執行,然后確定下一步的動作。這樣的邏輯必須得到Bash函數的返回值,用以表示函數執行的狀態。

#!/bin/bash 
foo(){
echo Jay
}
result="$(foo)"
echo $result
exit 0

也可用 return 關鍵字:

#!/bin/bash 
yesorno(){
echo "is your name $*? "
while true
do
read -p "Enter yes or no: " x
case $x in   
y|Y )
return 0;;
n|N )
return 1;;
* )
echo "answer yes or no"
esac
done
}

echo "original parameters are $*"
if yesorno "$1"
then
echo "Hi $1, nice name"
else
echo "Never mind"
fi
exit 0

如果沒有在一個函數內使用return命令指定一個返回值,函數返回的就是執行的最后一條命令的推出碼。

 

四、其他

必須在調用一個函數之前先對他進行定義。

可以用 local 關鍵字在shell函數中聲明局部變量。


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM