Linux shift左移命令引數

2021-10-09 12:12:43 字數 1537 閱讀 3014

摘錄:

位置引數可以用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 命令執行後就不可用了。

shell指令碼中的位置引數有兩種:一種是呼叫指令碼時傳給指令碼的引數,另一種是呼叫指令碼的函式時,傳給函式的引數。

1、指令碼引數示例如下:

#測試 shift 命令(x_shift.sh)

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

其顯示結果為:

452、指令碼中函式引數舉例說明:

#!/bin/bash  

function func_t()  

shift   #將指令碼tmp.sh的位置引數向左移動一位  

func_t ee rr ss  

echo $@

使用bash tmp.sh 11 22 33來呼叫指令碼,執行結果如下:

rr ss  

22 33  

Apache Impala shell命令引數

所謂的外部命令指的是不需要進入到impala shell互動命令行當中即可執行的命令引數。impala shell後面執行的時候可以帶很多引數。你可以在啟動 impala shell 時設定,用於修改命令執行環境。比如幾個常見的 impala shell r重新整理impala元資料,與建立連線後執...

webpack dev server的命令引數

加在package.json中scripts物件中 scripts 自動打包後自動開啟瀏覽器 open 加在scripts中的dev 修改埠 port 埠號 自動開啟某個路徑 contentbase 路徑 熱過載 hot 區域性更新,不整個檔案重新打包 可以使瀏覽器非同步重新整理 webpack d...

webpack dev server的命令引數

加在package.json中scripts物件中 scripts 自動打包後自動開啟瀏覽器 open 加在scripts中的dev 修改埠 port 埠號 自動開啟某個路徑 contentbase 路徑 熱過載 hot 區域性更新,不整個檔案重新打包 可以使瀏覽器非同步重新整理 webpack d...