位置引數可以用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。
Linux shell中的if判斷
e file 如果 file存在,則為真 d file 如果 file為目錄,則為真 f file 如果 file為常規檔案,則為真 l file 如果 file為符號鏈結,則為真 r file 如果 file可讀,則為真 w file 如果 file可寫,則為真 x file 如果 file可執行...
Linux shell中的變數
1.變數 1 名稱 字母 數字 下劃線組成,數字不能開頭 2 在bash中,變數的預設型別都是字串型,別的型別要指定 2.變數分類 1 本地變數 使用者變數 區域性變數只在建立它們的shell中使用,也可以修改 2 環境變數 可以在建立它們的shell及其派生出來的任意子程式中使用和修改 有些變數是...
linux shell 中 的含義
介紹下shell中的katex parse error expected eof got at position 4 和 使用範例,本文給出了不 分別替換得到不同的值 刪掉第乙個 及其左邊的字串 dir1 dir2 dir3 my.file.txt 刪掉最後乙個 及其左邊的字串 my.file.tx...