如何在Shell腳本中傳遞命令行參數(shù)

命令行參數(shù)在命令行操作系統(tǒng)(如dos或linux)中的程序名稱之后傳遞,并從操作系統(tǒng)傳遞到程序中。shell腳本也接受類似于nix命令的命令行參數(shù)。命令行參數(shù)對于在運(yùn)行時(shí)將輸入數(shù)據(jù)傳遞給腳本很有用,本文將介紹關(guān)于在shell腳本中傳遞命令行參數(shù)。

如何在Shell腳本中傳遞命令行參數(shù)

要傳遞命令行參數(shù),我們只需在用空格分隔的腳本名之后編寫它們。所有命令行參數(shù)都可以使用$來訪問其位置編號。向shell腳本傳遞命令行參數(shù)的示例。

#?sh?myScript.sh?10?red?admin.net

sh:Linux shell

myScript.sh:Linux shell 腳本

10:$1可訪問的第一個(gè)命令行參數(shù)

red:第二個(gè)命令行參數(shù),可以通過$2訪問

admin.net:$3可訪問的第三個(gè)命令行參數(shù)

訪問帶位置編號的命令行參數(shù)

如上所示,命令行參數(shù)可以在$1、$2、$3…$9、$10…$100等處訪問。命令行參數(shù)的最大長度不是由shell定義的,而是由操作系統(tǒng)定義的,以千字節(jié)為單位。

$*:存儲所有命令行參數(shù)

$@:存儲所有命令行參數(shù)

$:存儲命令行參數(shù)的計(jì)數(shù)

$0:腳本本身的存儲名稱

$1:存儲第一個(gè)命令行參數(shù)

$2:存儲第二個(gè)命令行參數(shù)

$3:存儲第三個(gè)命令行參數(shù)

$9:存儲第9個(gè)命令行參數(shù)

$10:存儲第10個(gè)命令行參數(shù)

$99:存儲第99個(gè)命令行參數(shù)

例1:

使用腳本名稱和傳遞的參數(shù)總數(shù)創(chuàng)建一個(gè)shell腳本來打印所有參數(shù)。創(chuàng)建腳本文件myScript.sh要求以下內(nèi)容。

#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:?"$*"

執(zhí)行腳本

#?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腳本中的所有參數(shù)創(chuàng)建循環(huán)。為此,請創(chuàng)建一個(gè)shell腳本文件myscript2.sh,其中包含以下內(nèi)容。

#?vim?myScript2.sh
#!/bin/bash  for?i?in?"$@" do ??echo?Argument:?$i done

執(zhí)行腳本

#?./myScript2.sh??10?rahul?tecadmin.net  Argument:?10 Argument:?red Argument:?admin.net

通過移位來訪問命令行參數(shù)

我們還可以通過改變命令行參數(shù)在shell腳本中的位置來訪問它們。比如用$1訪問第一個(gè)命令行參數(shù)。現(xiàn)在將參數(shù)換成1.意味著第二個(gè)參數(shù)現(xiàn)在位于第一個(gè)位置,相同的第三個(gè)位于第二個(gè)位置,依此類推。

使用下面的內(nèi)容創(chuàng)建shell腳本myscript3.sh,并使用參數(shù)執(zhí)行。現(xiàn)在現(xiàn)在觀察如何在shell腳本中使用“shift ”命令移動參數(shù)。

#!/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

執(zhí)行腳本并密切觀察腳本中$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

本篇文章到這里就已經(jīng)全部結(jié)束了,更多其他精彩內(nèi)容可以關(guān)注php中文網(wǎng)的Linux教程視頻欄目!

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊8 分享