成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

linux命令行傳參數(shù) linux傳參數(shù)運(yùn)行腳本

linux下命令傳參問(wèn)題

什么前者 后者

為正藍(lán)等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及正藍(lán)網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都做網(wǎng)站、成都網(wǎng)站建設(shè)、正藍(lán)網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專(zhuān)業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

find / -name abc

這個(gè)是查罩肆李找‘根’下面 名為物遲abc 的文件

./configure --prefix=/root

這個(gè)是源碼包安裝編雹虧譯三步 當(dāng)中的第一步 --prefix=/root 將軟件安裝在root目錄下

linux編譯的main函數(shù)的參數(shù)是怎么傳值進(jìn)來(lái)

方法1.

C/C++語(yǔ)言中的main函數(shù),經(jīng)常帶有參數(shù)argc,argv,如下:

int main(int argc, char** argv)

int main(int argc, char* argv[])

這兩個(gè)參數(shù)的作用是什么呢?argc 是指桐困螞命令行輸入?yún)?shù)的個(gè)數(shù),argv存儲(chǔ)了所尺畢有的命令行參數(shù)。假如你的程序是hello.exe,如果在命令行運(yùn)行該程序,(首先應(yīng)該在命令行下用 cd 命令進(jìn)入到 hello.exe 文件所在目錄) 運(yùn)行命令為:

hello.exe Shiqi Yu

那么,argc的值是 3,argv[0]是"hello.exe",argv[1]是"Shiqi",argv[2]是"Yu"局埋。

下面的程序演示argc和argv的使用:

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

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

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

1、命令行參數(shù)

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

1)讀取參數(shù)

讀取輸入的參數(shù)的變量為位置參數(shù),位置參數(shù)通過(guò)標(biāo)準(zhǔn)數(shù)字表示,

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

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

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

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

2)讀取程序名稱

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

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

3)測(cè)試腳本

當(dāng)腳本認(rèn)為應(yīng)該包含參數(shù),卻實(shí)際上沒(méi)有數(shù)據(jù)時(shí),就會(huì)出錯(cuò)。

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

例子:if [ –n “$1” ] then .. else .. fi

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

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

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

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

例子:if [ $# –ne 2 ] 即可測(cè)試參數(shù)個(gè)數(shù)

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

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

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

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

3、移位

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

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

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

4、處理選項(xiàng)

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

1,找出選項(xiàng)

1)處理簡(jiǎn)單選項(xiàng)

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

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

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

3)處理帶值的選項(xiàng)

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

2,使用getopt命令

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

1)命令格式

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

命令格式為: getopt options optstring parameters

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

2)腳本中使用getopt

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

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

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

3)更高級(jí)的getopts命令

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

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

格式為: getopts optstring variable

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

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

好的特性:

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

2)選項(xiàng)字母和參數(shù)值中間可以沒(méi)有空格

3)將在命令行中找到的未定義的選項(xiàng)都綁定為單一的輸出——問(wèn)號(hào)

5、標(biāo)準(zhǔn)化選項(xiàng)

有一些字母選項(xiàng)具有標(biāo)準(zhǔn)含義。最好按照標(biāo)準(zhǔn)含義定義選項(xiàng)意義

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

6、獲取用戶輸入

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

1)基本讀取

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

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

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

2)計(jì)時(shí)

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

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

3)默讀

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

4)讀取文件

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

本文標(biāo)題:linux命令行傳參數(shù) linux傳參數(shù)運(yùn)行腳本
文章地址:http://jinyejixie.com/article6/ddpihig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、動(dòng)態(tài)網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)、建站公司企業(yè)網(wǎng)站制作、手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營(yíng)
文昌市| 武陟县| 贡山| 临清市| 遂宁市| 馆陶县| 泊头市| 富裕县| 阿合奇县| 游戏| 延安市| 滁州市| 怀仁县| 仁化县| 延吉市| 青龙| 来凤县| 西贡区| 湄潭县| 沁源县| 大足县| 木里| 伊金霍洛旗| 宝清县| 秭归县| 加查县| 桓仁| 榆社县| 海伦市| 沾化县| 利川市| 府谷县| 油尖旺区| 盐城市| 泰顺县| 龙岩市| 高淳县| 阿尔山市| 新干县| 胶南市| 无极县|