位置參數能夠用
shift
命令左移。好比
shift 3
表示原來的
$4
如今變成
$1
,原來的
$5
如今變成
$2
等等,原來的
$1
、
$2
、
$3
丟棄,
$0
不移動。不帶參數的
shift
命令至關於
shift 1
。
很是有用的 Unix 命令:shift。咱們知道,對於位置變量或命令行參數,其個數必須是肯定的,或者當 Shell 程序不知道其個數時,能夠把全部參數一塊兒賦值給變量$*。若用戶要求 Shell 在不知道位置變量個數的狀況下,還能逐個的把參數一一處理,也就是在 $1 後爲 $2,在 $2 後面爲 $3 等。在 shift 命令執行前變量 $1 的值在 shift 命令執行後就不可用了。 示例以下: #測試 shift 命令(x_shift.sh) until [ $# -eq 0 ] do echo "第一個參數爲: $1 參數個數爲: $#" shift done 執行以上程序x_shift.sh: $./x_shift.sh 1 2 3 4 結果顯示以下: 第一個參數爲: 1 參數個數爲: 4 第一個參數爲: 2 參數個數爲: 3 第一個參數爲: 3 參數個數爲: 2 第一個參數爲: 4 參數個數爲: 1 從上可知 shift 命令每執行一次,變量的個數($#)減一,而變量值提早一位,下面代碼用 until 和 shift 命令計算全部命令行參數的和。 #shift 上檔命令的應用(x_shift2.sh) if [ $# -eq 0 ] then echo "Usage:x_shift2.sh 參數" exit 1 fi sum=0 until [ $# -eq 0 ] do sum=`expr $sum + $1` shift done echo "sum is: $sum" 執行上述程序: $x_shift2.sh 10 20 15 其顯示結果爲: 45 Shift 命令還有另一個重要用途, Bsh 定義了9個位置變量,從 $1 到 $9,這並不意味着用戶在命令行只能使用9個參數,藉助 shift 命令能夠訪問多於9個的參數。 Shift 命令一次移動參數的個數由其所帶的參數指定。例如當 shell 程序處理完前九個命令行參數後,能夠使用 shift 9 命令把 $10 移到 $1。