Shell編程中Shift的用法

來源:互聯網
上載者:User
位置參數可以用 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。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.