C Shell 指令碼/引數
外觀
在指令碼中,變數$0、$1、$2等被稱為位置引數。變數$0表示命令的名稱,$1、$2及更大的變數將是傳遞給指令碼的引數。
當呼叫csh指令碼時,特殊變數argv被設定為命令列給出的引數的字列表。因此,作為特殊變數$1、$2等的替代方法,csh指令碼可以使用$argv[1]、$argv[2]等訪問命令列引數。變數$#argv的值是給出的引數數量。
例如,編寫一個myparams指令碼
#!/bin/csh -f echo The $0 command is called with $#argv parameters echo parameter 1 is $1 echo parameter 2 is $2 echo parameter 3 is $3 echo parameter 4 is $4 echo 2nd and on parameters are \"$argv[2-]\"
echo All Parameters are \"$argv\" echo All Parameters are \"$argv[*]\" echo All Parameters are \"$*\"
然後執行命令
./myparams alpha beta omega
這將打印出以下內容
The ./myparams command is called with 3 parameters parameter 1 is alpha parameter 2 is beta parameter 3 is omega parameter 4 is All Parameters are "alpha beta omega" 2nd and on parameters are "beta omega"
如果引數丟失,位置引數的值將是一個空字串,就像第 4 個引數一樣。另外,您可以使用變數 $argv 獲取整個或部分命令列,它是一個字列表。
如果要在一個引數中包含空格,則必須引用該值。例如,執行以下命令
./myparams "alpha beta" omega
將打印出以下內容
The ./myparams command is called with 2 parameters parameter 1 is alpha beta parameter 2 is omega parameter 3 is parameter 4 is All Parameters are "alpha beta omega" 2nd and on parameters are "omega"
現在 alpha 和 beta 值合併成一個單一值。
- 傳遞給指令碼的引數可以使用編號變數訪問,例如
$1、$2、$3等等。 - 傳遞給指令碼的引數也可以使用名為
$argv的字列表變數訪問。