Shell編程中Shift的用法

位置參數能夠用shift命令左移。好比shift 3表示原來的$4如今變成$1,原來的$5如今變成$2等等,原來的$1$2$3丟棄,$0不移動。不帶參數的shift命令至關於shift 1shell

很是有用的 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。測試

相關文章
相關標籤/搜索