一、Shell函數參數傳遞
在Shell編程中,函數參數可以通過以下兩種方式進行傳遞:
- 位置參數傳遞
- 通過函數名和位置參數的方式進行傳遞。
- 位置參數可以是任意個數,並且通過”$n”來獲取參數,n表示參數的位置。
- 關鍵字參數傳遞
- 通過函數名和關鍵字參數的方式進行傳遞。
- 可以通過”$1″,”$2″等變量來獲取參數。
function fun1() {
echo "Hello $1"
}
fun1 "World"
#輸出 "Hello World"
function fun2() {
echo "Hello $1, nice to meet you $2!"
}
fun2 -n "World"
#輸出 "Hello -n, nice to meet you World!"
二、Shell函數參數有空格
當參數中含有空格時,可以使用雙引號或單引號來包含參數。
function fun3() {
echo "Hello $1, nice to meet you $2!"
}
fun3 "Bob Green" "Tom Lee"
#輸出 "Hello Bob Green, nice to meet you Tom Lee!"
三、Shell函數參數調用
在函數中可以通過$#,$*或$@來獲取所有參數。
- $# 獲取參數的個數。
- $* 獲取所有參數,以一個字符串的形式返回。
- $@ 獲取所有參數,以一個列表的形式返回。
function fun4() {
echo "參數個數為 $#"
echo "\$* 輸出為 $*"
echo "\$@ 輸出為 $@"
}
fun4 "A" "B" "C"
#輸出 "參數個數為 3"
#輸出 "\$* 輸出為 A B C"
#輸出 "\$@ 輸出為 A B C"
四、Shell函數參數指針傳遞
在Shell函數中,參數是按值傳遞的。如果需要指針傳遞,則需要使用全局變量。
global_var="init value"
function fun5() {
echo "傳入函數前,全局變量為 $global_var"
global_var="changed value"
}
fun5
echo "傳入函數後,全局變量為 $global_var"
#輸出 "傳入函數前,全局變量為 init value"
#輸出 "傳入函數後,全局變量為 changed value"
五、Shell參數
Shell中的參數包括:位置參數、選項參數和命令行參數。
- 位置參數:即函數調用時傳遞的參數。
- 選項參數:一般以”-“或”–“開頭的參數。
- 命令行參數:指定命令運行的一些參數,可以是位置參數和選項參數。
六、Shell判斷命令行參數
使用getopt命令和while循環來判斷命令行參數。
while getopts "a:bc" opt; do
case $opt in
a)
echo "-a 參數的值為 $OPTARG"
;;
b)
echo "-b 參數被設置"
;;
c)
echo "-c 參數被設置"
;;
\?)
echo "無效參數: -$OPTARG" >&2
exit 1
;;
:)
echo "選項 -$OPTARG 需要參數。" >&2
exit 1
;;
esac
done
七、Shell位置參數
在Shell中,$0 代表腳本名稱,$1 $2 $3 …代表位置參數。
八、Shell所有參數
$* 和 $@ 都可以獲取所有位置參數。
echo "\$* 輸出為 $*" echo "\$@ 輸出為 $@"
九、Shell命令中什麼是參數
在Shell命令中,參數是指命令執行時所需的選項和參數。
ls -l /home/username #其中 -l 是選項參數,/home/username 是位置參數。
原創文章,作者:YYDTR,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/331582.html
微信掃一掃
支付寶掃一掃