您好,登錄后才能下訂單哦!
在Shell腳本中傳遞命令行參數的方法?這個問題可能是我們日常學習或工作經常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家帶來的參考內容,讓我們一起來看看吧!
命令行參數在命令行操作系統(如DOS或Linux)中的程序名稱之后傳遞,并從操作系統傳遞到程序中。Shell腳本也接受類似于nix命令的命令行參數。命令行參數對于在運行時將輸入數據傳遞給腳本很有用。
要傳遞命令行參數,我們只需在用空格分隔的腳本名之后編寫它們。所有命令行參數都可以使用$來訪問其位置編號。向shell腳本傳遞命令行參數的示例。
# sh myScript.sh 10 red admin.net
sh:Linux shell
myScript.sh:Linux shell 腳本
10:$1可訪問的第一個命令行參數
red:第二個命令行參數,可以通過$2訪問
admin.net:$3可訪問的第三個命令行參數
訪問帶位置編號的命令行參數
如上所示,命令行參數可以在$1、$2、$3...$9、$10…$100等處訪問。命令行參數的最大長度不是由shell定義的,而是由操作系統定義的,以千字節為單位。
$*:存儲所有命令行參數
$@:存儲所有命令行參數
$:存儲命令行參數的計數
$0:腳本本身的存儲名稱
$1:存儲第一個命令行參數
$2:存儲第二個命令行參數
$3:存儲第三個命令行參數
…
$9:存儲第9個命令行參數
$10:存儲第10個命令行參數
…
$99:存儲第99個命令行參數
例1:
使用腳本名稱和傳遞的參數總數創建一個shell腳本來打印所有參數。創建腳本文件myScript.sh要求以下內容。
#vim myScript.sh
#!/bin/bash echo Script Name: "$0" echo Total Number of Argument Passed: "$#" echo Arguments List - echo 1. $1 echo 2. $2 echo 3. $3 echo All Arguments are: "$*"
執行腳本
# sh myScript.sh 10 rahul tecadmin.net Script Name: myScrit.sh Total Number of Argument Passed: 3 Arguments List - 1. 10 2. red 3. admin.net All Arguments are: 10 red admin.net
例2:
通過shell腳本中的所有參數創建循環。為此,請創建一個shell腳本文件myscript2.sh,其中包含以下內容。
# vim myScript2.sh
#!/bin/bash for i in "$@" do echo Argument: $i done
執行腳本
# ./myScript2.sh 10 rahul tecadmin.net Argument: 10 Argument: red Argument: admin.net
通過移位來訪問命令行參數
我們還可以通過改變命令行參數在shell腳本中的位置來訪問它們。比如用$1訪問第一個命令行參數。現在將參數換成1.意味著第二個參數現在位于第一個位置,相同的第三個位于第二個位置,依此類推。
使用下面的內容創建shell腳本myscript3.sh,并使用參數執行。現在現在觀察如何在shell腳本中使用“shift <number>”命令移動參數。
#!/bin/bash echo First Argument is: $1 echo " >> Shifting argument position by 1" shift 1 echo Now first Argument is: $1 echo " >> Now Shifting position with 2" shift 2 echo Now first Argument is: $1 echo " >> Now shifting position with 4" shift 4 echo Now first Argument is: $1
執行腳本并密切觀察腳本中$1的輸出。
[root@tecadmin ~]# sh myScrit3.sh a friend in need is a friend indeed First Argument is: a >> Shifting argument position by 1 Now first Argument is: friend >> Now Shifting position with 2 Now first Argument is: need >> Now shifting position with 4 Now first Argument is: indeed
感謝各位的閱讀!看完上述內容,你們對在Shell腳本中傳遞命令行參數的方法大概了解了嗎?希望文章內容對大家有所幫助。如果想了解更多相關文章內容,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。