日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
深入理解LinuxShell參數(shù)解析(linuxshell參數(shù)解析)

Linux Shell是Linux系統(tǒng)命令行界面下的一種解釋器,通過Shell可以執(zhí)行Linux系統(tǒng)內(nèi)置的許多命令,完成對系統(tǒng)的各種操作,同時還可以編寫Shell腳本進行批處理等。在Shell命令行輸入命令時,可以通過參數(shù)來控制命令行的執(zhí)行,參數(shù)可以是單個字符,也可以是多個字符組成的字符串。在本文中,我們將的知識,為您介紹Shell參數(shù)的基本概念、參數(shù)類型、參數(shù)傳遞方式、參數(shù)解析等方面的知識。

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:主機域名、雅安服務(wù)器托管、營銷軟件、網(wǎng)站建設(shè)、濟源網(wǎng)站維護、網(wǎng)站推廣。

一、Shell參數(shù)的基本概念

參數(shù)是程序運行時從程序外部傳入的一種數(shù)據(jù),是Shell命令行執(zhí)行程序時控制程序執(zhí)行的手段。Shell參數(shù)一般由連字符’-‘緊跟著單個字符或者多個字符組成的字符串組成,每一個參數(shù)之間都可以用空格分隔來區(qū)分。通常情況下,參數(shù)的順序不同會導(dǎo)致命令的執(zhí)行結(jié)果不同,因此,在命令行輸入?yún)?shù)時,需要按照一定的順序進行輸入。

二、Shell參數(shù)的類型

Shell參數(shù)一般分為短參數(shù)和長參數(shù)兩種類型。

1、短參數(shù)

短參數(shù)是指由一個字符組成的參數(shù),使用時一般在字符前面添加一個連字符 ‘-‘。短參數(shù)可以單獨出現(xiàn),也可以與其他參數(shù)組合使用。

例如:

-c 命令中的-c就是短參數(shù)。

2、長參數(shù)

長參數(shù)是指由多個字符組成的參數(shù),使用時一般在字符前面添加兩個連字符 ‘–‘,用來區(qū)分短參數(shù)。長參數(shù)的命名規(guī)則一般采用單詞或單詞的縮寫來命名,多個單詞之間一般采用’-‘或’_’連接。長參數(shù)一般可以接受附加參數(shù)。

例如:

–config-file filename 命令中的–config-file filename就是長參數(shù)。

三、參數(shù)傳遞方式

Shell命令在執(zhí)行時,參數(shù)可以通過三種方式進行傳遞:

1、位置參數(shù)

位置參數(shù)是指在命令行輸入?yún)?shù)時,在命令和參數(shù)之間用空格或者空白字符隔開的部分。位置參數(shù)以$0-$9的形式進行標識,其中$0表示命令本身,$1-$9表示位置參數(shù)。

例如:

lscmd file1 file2 命令中,位置參數(shù)$0表示lscmd命令,$1表示file1,$2表示file2。

2、環(huán)境變量

環(huán)境變量是指在Shell中定義的一些特殊變量,用來保存某些參數(shù)信息,例如PATH、USER等。這些環(huán)境變量在執(zhí)行命令時,可以通過環(huán)境變量傳遞給命令進行使用。

例如:

$USER表示當(dāng)前用戶的用戶名。

3、標準輸入輸出

標準輸入輸出是指Shell命令執(zhí)行時,輸入的數(shù)據(jù)來源和輸出的數(shù)據(jù)去向。輸入通常需要從標準輸入stdin中讀取,輸出通常需要輸出到標準輸出stdout中。標準輸入輸出也可以通過重定向進行更改,將輸入和輸出分別重定向到文件或其他設(shè)備中。

例如:

cat file1file2 > file3命令中,將file1和file2的內(nèi)容輸出到file3中。

四、參數(shù)解析

參數(shù)解析是命令行解釋器解釋和處理參數(shù)的過程。在Linux Shell中,參數(shù)解析是通過 getopt() 或者getopt_long() 來實現(xiàn)的。

1、getopt()

getopt() 是最簡單的參數(shù)解析函數(shù),它只能解析短參數(shù),不能解析長參數(shù)。getopt() 的使用方法如下:

int getopt(int argc,char *const argv[],const char *optstring);

參數(shù)argc 表示命令行中參數(shù)的個數(shù); argv[] 表示參數(shù)的列表; optstring 表示以冒號(:)開頭的表示需要附加參數(shù)的短選項字符,沒有冒號表示不需要附加參數(shù)。

2、getopt_long()

getopt_long() 是可以解析短參數(shù)和長參數(shù)的參數(shù)解析函數(shù),它相比 getopt() 更為靈活。getopt_long() 的使用方法如下:

int getopt_long(int argc,char *const argv[],const char *optstring,const struct option *longopts,int*longindex)

參數(shù)argc 表示命令行中參數(shù)的個數(shù);argv[] 表示參數(shù)的列表;optstring 表示以冒號(:)開頭的表示需要附加參數(shù)的短選項字符,沒有冒號表示不需要附加參數(shù);longopts 表示長選項的結(jié)構(gòu)體數(shù)組,每個元素包含選項名(name)、選項類型(flag)和選項的取值(val)等三部分;longindex 表示長選項在長選項數(shù)組中的下標。

參數(shù)解析是Shell命令行執(zhí)行的重要步驟之一,了解參數(shù)解析以及getopt() 和 getopt_long() 的使用方法,可以幫助我們更加高效地控制命令行的使用和批量處理。

相關(guān)問題拓展閱讀:

  • linux中設(shè)計一個shell腳本程序可以接受命令行輸入的參數(shù)執(zhí)行相應(yīng)的菜單命令

linux中設(shè)計一個shell腳本程序可以接受命令行輸入的參數(shù)執(zhí)行相應(yīng)的菜單命令

echo “”

echo “1、命令1”

echo “賀洞塵2、命顫跡令2”

echo “3、命令3”

echo “”

echo “請輸入要執(zhí)行的菜單命令(1/2/3):”

read com

case $com in

1)

命禪禪令1

;;

2)

命令2

;;

3)

命令3

;;

*)

echo “輸入命令錯誤”

;;

之所以用到命令行參數(shù),關(guān)鍵在于shell腳本需要與運行腳本的人員進行交互。

bash shell提供了命令行參數(shù)添加在命令后面的數(shù)據(jù)值)、命令行選項修改命令行為的單字符值)和直接讀取鍵盤輸入。

1、命令行參數(shù)

向shell腳本傳遞數(shù)據(jù)的最基本方式是使用命令行參數(shù)。

1)讀取參數(shù)

讀取輸入的參數(shù)的變量為位置參數(shù),位置參數(shù)通過標準數(shù)字表示,

其中$0為程序名稱,$1為之一個參數(shù),$2為第二個參數(shù),依次類推,直到$9為第九個參數(shù)。

shell腳本自動將命令行參數(shù)賦值給各個位置變量。

同時輸入多個參數(shù)可以是數(shù)值也可以是字符串)時,必須使用空格分隔要想在參數(shù)值中包含空格,就必須使用單引號或雙引號)

當(dāng)參數(shù)多于9個后,必須在shell腳本內(nèi)使用大括號將變量括起來,如${10}。從而可以使用任意個參數(shù)。

2)讀取程序名稱

傳遞給變量$0的字符串實際上是程序的路徑根據(jù)調(diào)用方法決定是相對還是絕對路徑)。

使用basename命令可以去掉路徑前綴,只獲得程序名稱名字中不 可以有空格)。

3)測試腳本

當(dāng)腳本認為應(yīng)該包含參數(shù),卻實際上沒有數(shù)據(jù)時,就會出錯。

好的方法是對參數(shù)進行檢查來保證使用參數(shù)前確實存在數(shù)據(jù),可以使用-n參數(shù)來檢查。

例子:if then .. else .. fi

2、特殊的參數(shù)變量

用于跟蹤命令行參數(shù)

1)參數(shù)計數(shù)

使用特殊變量$#測試執(zhí)行腳本時包含的命令行參數(shù)個數(shù)。腳本中任何位置都可以 使用$#

例子:if 即可測試參數(shù)個數(shù)

可以使用${!#}來返回最后一個命令行參數(shù)當(dāng)無參數(shù)時,$#為0,而${!#}為程序名)

2)獲取所有數(shù)據(jù)

變量$*將命令行中提供的所有參數(shù)作為一個單詞處理,它將多個參數(shù)看成 一個參數(shù)。

變量$@將命令行中提供的所有參數(shù)作為同一個字符串中的多個單詞處理。 允許對其中的值進行迭代一般使用for),分隔開不同參數(shù)

3、移位

shift命令能夠改變命令行參數(shù)的相對位置。默 認將每個參數(shù)變量左移一個位置變量$0不變,把$1丟棄,注意不可以恢復(fù)了?。?/p>

在不清楚參數(shù)數(shù)目情況下,這是一個迭代參數(shù)的好辦法。

可以為shift提供一個參數(shù),來實現(xiàn)多位移變化。

4、處理選項

選項是由破折號引導(dǎo)的單個字母,用于更改命令的行為。

1,找出選項

1)處理簡單選項

可以使用處理命令行參數(shù)相同的方法處理選項,抽取時使用case語句進行判斷是否符合選項格式。

2)從參數(shù)中分離選項

同時使用選項和參數(shù)時,可以使用–指示選項列表的結(jié)束。發(fā)現(xiàn)–后,shell就知道后面的是普通參數(shù)了,停止使用case處理選項。

3)處理帶值的選項

選項后緊跟參數(shù)值,一種方法是在case中對應(yīng)選項后使用shift和讀后一位參數(shù)的方法處理。更好的方法如 下:

2,使用getopt命令

getopt命令在處理選項和參數(shù)時非常方便。它對參數(shù)進行重新組 織,以便于解析

1)命令格式

getopt可以接受任森余意形此察滾式的選項和參數(shù)列表,并自動將它們轉(zhuǎn)換為適當(dāng)?shù)母袷健?/p>

命令格式為: getopt options optstring parameters

選項字符串(opstring)用于定義命令行中的有效選項字母,以及哪些選項字母需要參數(shù)值。

2)腳本中使用getopt

需要使用set命令將現(xiàn)有的命令行選項和參數(shù)替換為getopt命令生成的 格式化形式。

需要將原始腳本命令行參數(shù)送給getopt命令,然后將getopt命令輸出送給set命令,如下:set – `getopts –q ab:cd “$@”`

但是getopt命令不能沒猜很好的處理帶有空格的參數(shù)值,它將空格解析為參數(shù)分隔符,而不是將雙引號引起來的兩個 值合并成一個參數(shù)。解決辦法如下:

3)更高級的getopts命令

getopts命令順序的對現(xiàn)有的shell參數(shù)變量進行處理,每調(diào)用一次,只處理命令中檢測到的參數(shù)中的一個。處理完所有參數(shù)后,以大于0的退出 狀態(tài)退出。

非常適宜于在循環(huán)中解析所有命令行參數(shù)

格式為: getopts optstring variable

$optarg包含需要參數(shù)值的選項要使用的值,$optind包含getopts停止處理時在參數(shù)列表中的位置。

注意:當(dāng)getopts處理時,會將選項前的-去掉,所以對應(yīng)的case中不需要破折號。

好的特性:

1)可以在參數(shù)值中包含空格

2)選項字母和參數(shù)值中間可以沒有空格

3)將在命令行中找到的未定義的選項都綁定為單一的輸出——問號

5、標準化選項

有一些字母選項具有標準含義。更好按照標準含義定義選項意義

-a –c –d –e –f –h –i –l –n –o –q –r –s –v- x –y

6、獲取用戶輸入

當(dāng)需要在執(zhí)行過程中獲得執(zhí)行腳本人員的輸入,使用read命令

1)基本讀取

read命令接受標準輸入或其他文件描述符輸入。讀入后將數(shù)據(jù)放入 一個標準變量中。

-p 允許在read命令行中直接指定一個提示。

可以指定多個變量,也可以不指定將放置在reply環(huán)境變量中)

2)計時

使用-t指定一個計時器,計時數(shù)滿還未輸入,read返回一個非0的退出狀態(tài)。

使用-n指定輸入的字符個數(shù),輸入達到預(yù)定數(shù)目時,就自動結(jié)束輸入

3)默讀

使用-s使輸入不顯示在終端例如輸入密碼)

4)讀取文件

最常用的方法是使用cat命令,并通過管道傳給包含read的while語句。

linux shell參數(shù)解析的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于linux shell參數(shù)解析,深入理解Linux Shell參數(shù)解析,linux中設(shè)計一個shell腳本程序可以接受命令行輸入的參數(shù)執(zhí)行相應(yīng)的菜單命令的信息別忘了在本站進行查找喔。

香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗。專業(yè)提供云主機、虛擬主機、域名注冊、VPS主機、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。


新聞標題:深入理解LinuxShell參數(shù)解析(linuxshell參數(shù)解析)
URL網(wǎng)址:http://www.5511xx.com/article/dhpsoop.html