干熟妇在线视频午夜剧场一级A级|99成人香视频日本两性激情视频|久久 午夜福利无码精品人妻一区|热久久超碰精品精品少妇一区二区|五月天综合在线国产一区免费视频|亚洲成人中心热re久久99|亚洲国产怡红院丁香五月综合h|玖玖九久久久午夜射精视频

十二年專注于品牌網(wǎng)站建設(shè) 十余年專注于網(wǎng)站建設(shè)_小程序開發(fā)_APP開發(fā),低調(diào)、敢創(chuàng)新、有情懷!
南昌百恒網(wǎng)絡(luò)微信公眾號 掃一掃關(guān)注
小程序
tel-icon全國服務(wù)熱線:400-680-9298,0791-88117053
掃一掃關(guān)注百恒網(wǎng)絡(luò)微信公眾號
掃一掃打開百恒網(wǎng)絡(luò)微信小程序

百恒網(wǎng)絡(luò)

南昌百恒網(wǎng)絡(luò)

shell腳本編程之if-then語句的使用方法

百恒網(wǎng)絡(luò) 2017-08-15 13392

許多程序要求對shell腳本中的命令施加一些邏輯流程控制。有一類命令會根據(jù)條件使腳本跳過某些命令。這樣的命令通常稱為結(jié)構(gòu)化命令(structured command)。

結(jié)構(gòu)化命令允許你改變程序執(zhí)行的順序。在bash shell中有不少結(jié)構(gòu)化命令,基本的結(jié)構(gòu)化命令就是if-then語句,if-then語句有如下格式。

if command

then

commands

fi

如果你在用其他編程語言的if-then語句,這種形式可能會讓你有點(diǎn)困惑。在其他編程語言中,if語句之后的對象是一個等式,這個等式的求值結(jié)果為TRUE或FALSE。但bash shell的if語句并不是這么做的。

bash shell的if語句會運(yùn)行if后面的那個命令。如果該命令的退出狀態(tài)碼是0 (該命令成功運(yùn)行),位于then部分的命令就會被執(zhí)行。如果該命令的退出狀態(tài)碼是其他值,then部分的命令就不會被執(zhí)行,bash shell會繼續(xù)執(zhí)行腳本中的下一個命令。fi語句用來表示if-then 語句到此結(jié)束。

為了讓大家更好的解釋這個概念,南昌網(wǎng)絡(luò)公司-百恒網(wǎng)絡(luò)用以下例子向大家說明一下:

$ cat test1.sh

#!/bin/bash

# testing the if statement

if pwd

then

echo "It worked"

fi

$

這個腳本在if行采用了pwd命令。如果命令成功結(jié)束,echo語句就會顯示該文本字符串。在 命令行運(yùn)行該腳本時,會得到如下結(jié)果。

$ ./test1.sh

/home/Christine

It worked

$

shell執(zhí)行了if行中的pwd命令。由于退出狀態(tài)碼是0,它就又執(zhí)行了then部分的echo語句。

以下是本公司要舉的另外一個例子。

$ cat test2.sh

#!/bin/bash

# testing a bad command

if IamNotaCommand

then

echo "It worked"

fi echo "We are outside the if statement"

$

$ ./test2.sh

./test2.sh: line 3: IamNotaCommand: command not found

We are outside the if statement

$

在這個例子中,我們在if語句行故意放了一個不能工作的命令。由于這是個錯誤的命令,所以它會產(chǎn)生一個非零的退出狀態(tài)碼,且bash shell會跳過then部分的echo語句。還要注意,運(yùn)行 if語句中的那個錯誤命令所生成的錯誤消息依然會顯示在腳本的輸出中。有時你可能不想看到錯誤信息。

在then部分,你可以使用不止一條命令??梢韵裨谀_本中的其他地方一樣在這里列出多條命令。bash shell會將這些命令當(dāng)成一個塊,如果if語句行的命令的退出狀態(tài)值為0,所有的命令都會被執(zhí)行;如果if語句行的命令的退出狀態(tài)不為0,所有的命令都會被跳過。

$ cat test3.sh

#!/bin/bash

# testing multiple commands in the then section

#

testuser=Christine

#

if grep $testuser /etc/passwd

then

echo "This is my first command"

echo "This is my second command"

echo "I can even put in other commands besides echo:"

ls -a /home/$testuser/.b*

fi

$

if語句行使用grep命令在/etc/passwd文件中查找某個用戶名當(dāng)前是否在系統(tǒng)上使用。如果有用戶使用了那個登錄名,腳本會顯示一些文本信息并列出該用戶HOME目錄的bash文件。

$ ./test3.sh

Christine:x:501:501:Christine B:/home/Christine:/bin/bash

This is my first command

This is my second command

I can even put in other commands besides echo:

/home/Christine/.bash_history /home/Christine/.bash_profile

/home/Christine/.bash_logout /home/Christine/.bashrc

$

但是,如果將testuser變量設(shè)置成一個系統(tǒng)上不存在的用戶,則什么都不會顯示。

$ cat test3.sh

#!/bin/bash # testing multiple commands in the then section

#

testuser=NoSuchUser

#

if grep $testuser /etc/passwd

then

echo "This is my first command"

echo "This is my second command"

echo "I can even put in other commands besides echo:"

ls -a /home/$testuser/.b*

fi

$

$ ./test3.sh

$

看起來也沒什么新鮮的。如果在這里顯示的一些消息可說明這個用戶名在系統(tǒng)中未找到,這樣可能就會顯得更友好。

以上就是百恒網(wǎng)絡(luò)為大家介紹的關(guān)于linux命令行中if-then 語句的使用方法,不知道大家對于這一概念是否有了一定的了解,如果還不是很明白的朋友可在看一遍,或者來電和我們聯(lián)系,本公司專業(yè)為您講解。作為一家優(yōu)秀的南昌網(wǎng)絡(luò)公司之一,百恒網(wǎng)絡(luò)自公司成立以來,一直堅持以人為本,誠信經(jīng)營,主要服務(wù)有網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)等,經(jīng)過十多年的努力奮斗,百恒網(wǎng)絡(luò)在業(yè)界獲得了廣大用戶朋友的一直好評,良好口碑滿口相傳,大家如果有需要我們服務(wù)的地方,可隨時來電和我們聯(lián)系,百恒隨時為您效勞!


400-680-9298,0791-88117053
掃一掃關(guān)注百恒網(wǎng)絡(luò)微信公眾號
掃一掃打開百恒網(wǎng)絡(luò)小程序

歡迎您的光顧,我們將竭誠為您服務(wù)×

售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售后服務(wù) 售后服務(wù)
 
售后服務(wù) 售后服務(wù)
 
備案專線 備案專線
 
×