跳轉到內容

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. 傳遞給指令碼的引數可以使用編號變數訪問,例如$1$2$3等等。
  2. 傳遞給指令碼的引數也可以使用名為$argv的字列表變數訪問。
華夏公益教科書