shell程式設計中shift的用法
位置引數可以用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。
示例如下:
#測試 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。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29802484/viewspace-1868198/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Shell程式設計-09-Shell中的函式程式設計函式
- js中push(),pop(),unshift(),shift()的用法小結JS
- Shell程式設計-04-Shell中變數數值計算程式設計變數
- shell中set指令的用法
- shell程式設計程式設計
- shell程式設計中的控制判斷語句程式設計
- Linux Shell程式設計(1)——shell程式設計簡介Linux程式設計
- shell程式設計學習筆記(二):Shell中變數的使用程式設計筆記變數
- Shell程式設計 --- Shell介紹程式設計
- Linux shell程式設計(一)shell指令碼中的變數詳解Linux程式設計指令碼變數
- Windows Shell 程式設計Windows程式設計
- shell程式設計(轉)程式設計
- shell程式設計二程式設計
- shell程式設計五程式設計
- Shell程式設計-shell變數1程式設計變數
- Bourne Shell及shell程式設計(轉)程式設計
- 程式設計中位運算用法總結程式設計
- Shell程式設計-02-Shell變數程式設計變數
- Linux Shell程式設計(27)——子shellLinux程式設計
- linux下的SHELL程式設計Linux程式設計
- Linux 程式設計之Shell程式設計(轉)Linux程式設計
- 初識shell程式設計程式設計
- Shell 程式設計入門程式設計
- shell程式設計進階程式設計
- shell程式設計入門程式設計
- Shell程式設計-基礎程式設計
- shell併發程式設計程式設計
- linux shell 程式設計Linux程式設計
- linux shell程式設計Linux程式設計
- 戀上shell程式設計程式設計
- Oracle-SHELL程式設計Oracle程式設計
- shell程式設計簡介程式設計
- shell vbscript xml程式設計XML程式設計
- shell 程式設計簡記程式設計
- shell程式設計基礎程式設計
- Shell程式設計-11-子Shell和Shell巢狀程式設計巢狀
- Linux Shell程式設計(2)——第一個shell程式Linux程式設計
- BASH Shell的指令碼程式設計(轉)指令碼程式設計