shell指令碼 shift引數左移

2022-03-19 00:11:45 字數 699 閱讀 6810

引數左移什麼意思呢?這個引數指的是在執行指令碼時,跟在指令碼名後面的引數,前面已經講過,可以使用$#來獲取引數的個數,使用$*來獲取所有的引數,而引數左移的含義是這樣的:有個指標指向引數列表第乙個引數,左移的意思就是每讀乙個引數,指標就指向第二個引數,就好像引數向左移動了,於是乎,這樣就可以讀取每個引數的值了,在迴圈結構中特別常用。

下面乙個例子:

#!/bin/bash

#檔名:test.sh

tot=0

while [ $# -gt 0 ]

do echo "引數為"$1 #注意這裡使用$1來獲取引數值

tot=$(($tot + 1))

shift #注意如果不使用shift時,會出現死迴圈

done

echo "一共$tot個引數"

執行測試:

ubuntu@ubuntu:~$ ./test.sh

一共0個引數

ubuntu@ubuntu:~$ ./test.sh abc xyz

引數為abc

引數為xyz

一共2個引數

ubuntu@ubuntu:~$

上面這個例子,可以將引數列表看做乙個佇列,在命令列輸入命令的時候,引數從左到右依次入隊,然後每次shift一次,則隊首的引數出隊,佇列元素個數($#)減1,知道減為0時,迴圈結束。

shell 指令碼中 , , 和shift

的區別 0 這個程式的執行名字 n 這個程式的第n個引數值,n 1.9 這個程式的所有引數,此選項引數可超過9個。這個程式的引數個數 這個程式的pid 指令碼執行的當前程序id號 執行上乙個背景指令的pid 後台執行的最後乙個程序的程序id號 執行上乙個指令的返回值 顯示最後命令的退出狀態。0表示沒...

shell指令碼中shift的用法說明

shift命令用於對引數的移動 左移 通常用於在不知道傳入引數個數的情況下依次遍歷每個引數然後進行相應處理 常見於linux中各種程式的啟動指令碼 示例1 依次讀取輸入的引數並列印引數個數 run.sh bin bash while 0 do echo 第乙個引數為 1,引數個數為 shift do...

shell指令碼 訪問shell指令碼的引數

所謂的位置引數 positional parameters 指的也就是shell指令碼的命令列引數 command line arguments 在shell函式裡,它們同時也可以是函式的引數。各引數都由整數來命名。由於歷史原因,當它超過9時,就應該用大括號把數字框起來 echo first arg...