Shell程式設計中Shift的用法

2021-08-27 03:24:50 字數 1640 閱讀 3928

位置引數可以用shift命令左移。比如shift 3表示原來的4現

在變成$

1,原來

的$5現

在變成$

2等等,

原來的$

1、$2

、$3丟

棄,4 現在

變成$1

,原來的

$5現在

變成$2

等等,原

來的$1

、$2、

$3丟棄

,0不移動。不帶引數的shift命令相當於shift 1。

非常有用的 unix 命令:shift。我們知道,對於位置變數或命令列引數,其個數必須是確定的,或者當 shell 程式不知道其個數時,可以把所有引數一起賦值給變數$*。若使用者要求 shell 在不知道位置變數個數的情況下,還能逐個的把引數一一處理,也就是在 $1 後為$2,在\ 2後

面為$3

等。在s

hift

命令執行

前變數 2後面

為$3等

。在sh

ift命

令執行前

變數

1 的值在 shift 命令執行後就不可用了。

示例如下:

測試 shift 命令(x_shift.sh)

until [ $# -eq 0 ]

do echo 「第乙個引數為: 1參

數個數為

: 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『

shif

tdon

eech

o「su

mis:

1 『s

hift

done

echo

「sum

is

:sum」

執行上述程式:

$x_shift2.sh 10 20 15

其顯示結果為:

shift 命令還有另外乙個重要用途, bsh 定義了9個位置變數,從 1到

1

到9,這並不意味著使用者在命令列只能使用9個引數,借助 shift 命令可以訪問多於9個的引數。

shift 命令一次移動引數的個數由其所帶的引數指定。例如當 shell 程式處理完前九個命令列引數後,可以使用 shift 9 命令把 10移

到 10移到

1。

Shell程式設計中Shift的用法

位置引數可以用shift命令左移。比如shift 3表示原來的 4現在變成 1,原來的 5現在變成 2等等,原來的 1 2 3丟棄,0不移動。不帶引數的shift命令相當於shift 1。非常有用的 unix 命令 shift。我們知道,對於位置變數或命令列引數,其個數必須是確定的,或者當 shel...

Shell程式設計中Shift的用法

位置引數可以用shift命令左移。比如shift 3表示原來的 4現在變成 1,原來的 5現在變成 2等等,原來的 1 2 3丟棄,0不移動。不帶引數的shift命令相當於shift 1。非常有用的 unix 命令 shift。我們知道,對於位置變數或命令列引數,其個數必須是確定的,或者當 shel...

Shell程式設計中Shift的用法

位置引數可以用shift命令左移。比如shift 3表示原來的 4現在變成 1,原來的 5現在變成 2等等,原來的 1 2 3丟棄,0不移動。不帶引數的shift命令相當於shift 1。非常有用的 unix 命令 shift。我們知道,對於位置變數或命令列引數,其個數必須是確定的,或者當 shel...