一、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-tw/n/331582.html