我們知道命令可以帶參數(shù),同樣腳本文件運(yùn)行時(shí)也可以帶有參數(shù)。
1、腳本內(nèi)獲取參數(shù)
腳本內(nèi)獲取參數(shù)的格式為:$n
n代表一個(gè)數(shù)字,1 為執(zhí)行腳本的第一個(gè)參數(shù),2 為執(zhí)行腳本的第二個(gè)參數(shù),以此類推。
舉例,仍然在myshell.sh中進(jìn)行舉例,在該腳本文件中加入?yún)?shù)打印代碼echo $1,即將傳入的第一個(gè)參數(shù)打印出來:
保存后執(zhí)行腳本,并傳入?yún)?shù)par:
傳入兩個(gè)參數(shù)par1和par2,并打印出來:
保存后執(zhí)行腳本,并傳入?yún)?shù)par1和par2:
2、獲取傳遞參數(shù)
獲取傳遞參數(shù)的個(gè)數(shù)使用$#。
在腳本中加入echo $#,打印出輸入?yún)?shù)的個(gè)數(shù):
保存后執(zhí)行腳本,并傳入?yún)?shù)par1和par2:
3、傳入的參數(shù)打包為一個(gè)字符串
將傳入的參數(shù)打包為一個(gè)字符串使用$*。
在腳本中加入echo $*,打印出輸入的所有參數(shù):
可以看到$*是將所有的輸入?yún)?shù)組裝成為了字符串。
4、傳入的參數(shù)分別打包為一個(gè)字符串
將傳入的參數(shù)分別打包為字符串使用$@
我們先演示一下,在腳本中加入echo $@:
輸入三個(gè)參數(shù)執(zhí)行:
可以看到,echo $@打印出來的結(jié)果跟echo $*一樣,但是其實(shí),echo $*是將三個(gè)參數(shù)打包成一個(gè)字符串打印出來的,而echo $@是將三個(gè)參數(shù),分別打包為三個(gè)字符串打印出來的。