在shell 中 shift 命令 :
從n+1 的位置引數 被重新命名為$1 用數字$#降至 $#-n+1 。其中n值必須是非負,並且小於或者等於$#.如果n為0 沒有引數被改變。如果n假定為1,如果n大於$#,位置引數不會改變。返回狀態是大於零,如果n大於$#或小於0否則為0。
對於某個命令列引數,其引數個數可以不固定,但是可以通過$*或$@進行迴圈操作。若使用者要求shell在不知道變數個數的情況下,還能逐個處理引數,也就是在$1之後是$2,$2之後是$3。在未執行shift命令之前$1是可用的,當使用shift命令之後,原來的$2會變成$1,並且原有的$1變得不可用,通過$#命令獲得的引數個數也會少1。
舉例:
until [ $# -eq 0 ]
doecho "第乙個引數為: $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
fisum=0
until [ $# -eq 0 ]
dosum=`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 命令的使用
shift 命令的使用 我們知道,對於位置變數或命令列引數,其個數必須是確定的,或者當shell程式不知道其個數時,可以把所有引數一起賦值給變數 若使用者要求shell在不知道位置變數個數的情況下,還能逐個的把引數一一處理,也就是在 1後為 2,在 2後面為 3等。在 shift命令執行前變數 1的...
Linux中的shift命令
shift命令的使用 對於某個命令列引數,其引數個數可以不固定,但是可以通過 或 進行迴圈操作。若使用者要求shell在不知道變數個數的情況下,還能逐個處理引數,也就是在 1之後是 2,2之後是 3。在未執行shift命令之前 1是可用的,當使用shift命令之後,原來的 2會變成 1,並且原有的 ...
Linux中的shift命令
shift命令的使用 對於某個命令列引數,其引數個數可以不固定,但是可以通過 或 進行迴圈操作。若使用者要求shell在不知道變數個數的情況下,還能逐個處理引數,也就是在 1之後是 2,2之後是 3。在未執行shift命令之前 1是可用的,當使用shift命令之後,原來的 2會變成 1,並且原有的 ...