色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何在bash中使用條件語句

CHANBAEK ? 來源:TIAP ? 作者:TIAP ? 2022-12-09 17:27 ? 次閱讀

今天我們介紹一下如何在 bash 中使用條件語句。

在 bash 中使用 if 語句

在絕大多數編程語言中,if 語句都是最基本的條件語句。在 bash 中其語法如下:

if [ condition ]; then
  your code
fi

if 語句以 fi(與if相反)結束。

注意空格:

  • 在開始括號之后,與結束括號之前,都必須要有一個空格,否則 shell 將報錯;
  • 條件運算符(=,==,<=等)前后必須有空格,否則將報錯。

我們創建一個示例腳本 root.sh,當你以 root 身份運行該腳本的時候,才會進入 if 語句:

#!/bin/bash


if [ $(whoami) = 'root' ]; then
    echo "You are root"
fi

whoami 命令輸出當前用戶名。在 bash 變量教程中,我們介紹了 $(command) 結構的語法用于命令替換。

所以,當你以 root 用戶身份登錄時,條件 $(whoami) = 'root' 才為真。

圖片

if-else 語句

上述代碼中,如果當前用戶不是 root,將看不到任何輸出。當 if 條件為 false 的時候,需要將其執行的代碼放到 else 語句中,如下所示:

#!/bin/bash


if [ $(whoami) = 'root' ]; then
    echo "You are root"
else
    echo "You are not root"
fi

此時,當你以普通用戶運行腳本的時候,會輸出 You are not root,如下所示:

$ ./root.sh
You are not root

使用 else if 語句

當有多個表達式(條件)時,可以使用 elif(else-if)語句。看下面的例子,我們創建一個名為 age.sh 的腳本:

#!/bin/bash


AGE=$1


if [ $AGE -lt 13 ]; then
    echo "You are a kid."
elif [ $AGE -lt 20 ]; then
    echo "You are a teenager."
elif [ $AGE -lt 65 ]; then
    echo "You are an adult."
else
    echo "You are an elder."
fi

上述代碼中的 -lt 即小于(less than)。在前面的文章中我們介紹過如何給 bash 腳本傳遞參數,現在我們運行一下 age.sh,并傳遞不同的參數:

$ ./age.sh 11
You are a kid.
$ ./age.sh 18
You are a teenager.
$ ./age.sh 44
You are an adult.
$ ./age.sh 70
You are an elder.

需要注意的是,在條件語句中,可以有多個 elif ,但是只能有一個 else,且必須使用 fi 關閉。

在 bash 中嵌套使用 if 語句

if 語句可以嵌套使用。看如下 weather.sh 腳本:

#!/bin/bash


TEMP=$1


if [ $TEMP -gt 5 ]; then
    if [ $TEMP -lt 15 ]; then
        echo "The weather is cold."
    elif [ $TEMP -lt 25 ]; then
        echo "The weather is nice."
    else
        echo "The weather is hot."
    fi
else
    echo "It's freezing outside ..."
fi

上述腳本接受溫度作為參數,然后顯示一條反應天氣情況的信息。當溫度大于 5 度的時候,就會進入嵌套的 if 語句。我們運行一下該腳本:

$ ./weather.sh 0
It's freezing outside ...
$ ./weather.sh 8
The weather is cold.
$ ./weather.sh 16
The weather is nice.
$ ./weather.sh 30
The weather is hot.

在 bash 中使用 case 語句

我們還可以在 bash 中使用 case 語句來替換多個 if 語句,其構造的一般語法如下:

case "variable" in
"pattern1" )
Command … ;;
"pattern2" )
Command … ;;
"pattern2" )
Command … ;;
esac

注意:

  • 條件語句最后總會包含一個空格和右括號 );
  • 條件語句后的命令以兩個分號 ;; 結束,其前面的空格可有可沒有;
  • case 語句 以 esac 結尾(與 case 相反)。

case 語句在處理模式匹配或正則表達式的時候特別有用。作為演示,我們創建一個名為 char.sh 的腳本:

#!/bin/bash


CHAR=$1


case $CHAR in
[a-z])
echo "Small Alphabet." ;;
[A-Z])
echo "Big Alphabet." ;;
[0-9])
echo "Number." ;;
*)
echo "Special Character."
esac

上述腳本接受一個字符作為參數,并顯示該字符是大寫字母,還是小寫字母、數字還是特殊字符。

$ ./char.sh a
Small Alphabet.
$ ./char.sh Z
Big Alphabet.
$ ./char.sh 7
Number.
$ ./char.sh $
Special Character.

上述腳本中我使用了通配符 * 來定義默認字符,它相當于 if 語句中的 else 語句。

bash 中的測試條件

有許多測試條件可以與 if 語句一起使用。如果使用數字、字符串或文件,測試條件會有所不同。將它們視為bash中的邏輯運算符。

下表列出一些最常用的測試條件:

條件 相當于
a -ltb **a <**b
a -gtb **a >**b
a -leb **a <=**b
a -geb **a >=**b
a -eqb a 等于b
a -neb a 不等于b
-e**FILE **FILE 存在
-d**FILE **FILE 存在且是一個目錄.
-f**FILE **FILE 存在且是一個常規文件.
-L**FILE **FILE 存在且是一個軟鏈接.
**STRING1 =**STRING2 STRING1 等于STRING2
**STRING1 !=**STRING2 STRING1 不等于STRING2
-z**STRING1 **STRING1 是空的

上面這些測試條件不需要專門記,可以在 man 手冊中查看:

$ man test

我們創建一個名為 filetype.sh 的腳本,用來檢查文件是常規文件、目錄還是軟鏈接:

#!/bin/bash


if [ $# -ne 1 ]; then
    echo "Error: Invalid number of arguments"
    exit 1
fi


file=$1


if [ -f $file ]; then
    echo "$file is a regular file."
elif [ -L $file ]; then
    echo "$file is a soft link."
elif [ -d $file ]; then
    echo "$file is a directory."
else
    echo "$file does not exist"
fi

在腳本的開始,我們檢查一下參數的數量,如果沒有參數或者有多個參數,腳本會輸出一條消息并退出。下面是運行情況:

$ ./filetype.sh weather.sh
weather.sh is a regular file.
$ ./filetype.sh /bin
/bin is a soft link.
$ ./filetype.sh /var
/var is a directory.
$ ./filetype.sh 
Error: Invalid number of arguments

在同一行中編寫 if else 語句

到目前為止,我們上述代碼都是在規范的縮進格式下寫的,這是一種規范的寫法,但并不是非這樣寫不可。

當你只想在 shell 中看到結果時,可以在單行中使用 if else 語句。

假設我們有如下腳本:

if [ $(whoami) = 'root' ]; then
    echo "You are root"
else
    echo "You are not root"
fi

可以在一行代碼中這樣寫:

if [ $(whoami) = 'root' ]; then echo "root"; else echo "not root"; fi

大家可以運行一下上面的腳本,看看結果。

基本上,就是在命令結束后添加分號 ; ,然后寫下一條語句。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 命令
    +關注

    關注

    5

    文章

    733

    瀏覽量

    22770
  • 腳本
    +關注

    關注

    1

    文章

    397

    瀏覽量

    28383
  • Bash
    +關注

    關注

    0

    文章

    57

    瀏覽量

    10416
收藏 0人收藏

    評論

    相關推薦
    熱點推薦

    何在bash shell腳本中使用變量

    如果你使用編程語言編寫過程序,那么一定接觸過變量。而在 bash 腳本的編寫時,變量也是一個很重要的概念。今天我們分享一下如何在 bash 腳本中使用變量。
    發表于 12-02 16:32 ?2369次閱讀
    如<b class='flag-5'>何在</b><b class='flag-5'>bash</b> shell腳本<b class='flag-5'>中使</b>用變量

    何在bash腳本中創建第一個數組

    在前面的文章中,我們介紹了如何在 bash 中使用有限數量的變量,比如要保存一個或兩個文件名或用戶名。
    發表于 12-02 16:53 ?961次閱讀
    如<b class='flag-5'>何在</b><b class='flag-5'>bash</b>腳本中創建第一個數組

    何在bash中使用運算符來執行算術運算

    在編寫 bash 腳本的時候,經常會遇到需要計算數學結果的情況,比如需要計算磁盤剩余空間、文件大小、密碼到期時間、主機數量、網絡帶寬等。
    發表于 12-07 17:13 ?1900次閱讀
    如<b class='flag-5'>何在</b><b class='flag-5'>bash</b><b class='flag-5'>中使</b>用運算符來執行算術運算

    鴻蒙TypeScript入門學習第6天:【條件語句

    條件語句用于基于不同的條件來執行不同的動作。 TypeScript 條件語句是通過一條或多條語句
    的頭像 發表于 04-01 13:51 ?990次閱讀
    鴻蒙TypeScript入門學習第6天:【<b class='flag-5'>條件</b><b class='flag-5'>語句</b>】

    JavaScript 【4】 條件語句

    JavaScript if...Else 語句條件語句用于基于不同的條件來執行不同的動作。條件語句
    發表于 07-17 10:36

    何在C程序中使用匯編

    怎樣在C程序中使用匯編,如何在C程序中使用匯編:方法一:在每個匯編語句前加asm即可。如:void reset_data(void) { asm mov r0,#0dfh asm
    發表于 09-23 23:43 ?55次下載

    淺談條件語句的可綜合性

    條件語句的可綜合性 HDL語言的條件語句與算法語言的條件語句,最大的差異在于: 1.不管
    的頭像 發表于 05-12 09:12 ?2045次閱讀
    淺談<b class='flag-5'>條件</b><b class='flag-5'>語句</b>的可綜合性

    條件判斷語句(if語句

    條件判斷語句,作為任何編程語言都不可缺少的內容,在C語言中也不例外。條件判斷語句可以讓程序的功能更加復雜,從而實現各種各樣的功能。
    的頭像 發表于 02-21 15:24 ?4132次閱讀
    <b class='flag-5'>條件</b>判斷<b class='flag-5'>語句</b>(if<b class='flag-5'>語句</b>)

    詳解Python條件語句

    在 Python 中,if...else 是一種條件語句,可以根據給定的條件執行不同的操作。這個語句通常用于控制程序的流程。
    的頭像 發表于 04-19 15:39 ?1002次閱讀

    Verilog中的If語句和case語句介紹

    。這些語句統稱為順序語句。case 語句和 if 語句都是 verilog 中順序語句的示例。在這篇文章的其余部分,我們將討論如
    的頭像 發表于 05-11 15:37 ?5655次閱讀
    Verilog中的If<b class='flag-5'>語句</b>和case<b class='flag-5'>語句</b>介紹

    條件語句/循環語句simulink的實現方法(一)

    條件語句和循環語句是計算機編程中常用的兩種控制結構
    的頭像 發表于 07-21 16:48 ?1.3w次閱讀
    <b class='flag-5'>條件</b><b class='flag-5'>語句</b>/循環<b class='flag-5'>語句</b>simulink的實現方法(一)

    Python條件條件語句

    if語句 對于if語句,若條件判定為真,那么后面的語句塊就會被執行。若條件判定為假,語句塊就會被
    的頭像 發表于 09-12 16:45 ?806次閱讀

    BASH shell腳本篇—條件命令

    這篇文章介紹下BASH shell中的條件相關的命令,包括:if, case, while, until, for, break, continue。
    的頭像 發表于 10-11 15:21 ?931次閱讀
    <b class='flag-5'>BASH</b> shell腳本篇—<b class='flag-5'>條件</b>命令

    python if語句多個條件怎么用

    所有條件都必須為True才會執行if語句中的代碼塊,or運算符表示只要有一個條件為True就會執行代碼塊,而not運算符則用于反轉條件的結果。 以下是一個示例代碼,演示了如
    的頭像 發表于 11-21 16:45 ?3895次閱讀

    sql語句多個條件怎么連接

    SQL語句中使用了兩個條件,age >= 25表示年齡大于等于25,age OR運算符用于滿足多個條件中的至少一個條件的情況。例如,
    的頭像 發表于 11-23 11:34 ?2992次閱讀
    主站蜘蛛池模板: 色偷偷777 | 中文文字幕文字幕亚洲色 | 欧美一区二区视频在线观看 | 青青草国产精品久久 | 大香交伊人 | yellow片高清视频免费看 | 99精品视频在线观看re | 亚洲无AV在线中文字幕 | 国产精品网红女主播久久久 | 欧美激情一区二区三区视频 | 伊人久久综合网站 | 久欠热视频精品首页 | 与子敌伦刺激对白亂輪亂性 | 免费一级毛片在线观看 | 亚洲欧洲日本天天堂在线观看 | A国产一区二区免费入口 | 人妻精品久久无码专区 | 亚洲 日韩 色 图网站 | 久久精品免费观看久久 | 久久亚洲精品AV成人无码 | 国产成A人片在线观看 | 翘臀少妇被扒开屁股日出水爆乳 | 99re6久久热在线视频 | 亚洲一区二区三区高清网 | 人妻兽虐曲| 中文字幕免费在线视频 | 日本六九视频 | 伊人久久精品99热超碰 | 性生大片免费看 | 久久亚洲国产精品亚洲 | 欧美熟妇互舔20p | 把腿张开再深点好爽宝贝动态图 | 免费国产足恋网站 | 人妻天天爽夜夜爽三区麻豆A片 | 久久久97丨国产人妻熟女 | 美女动态图真人后进式 | 果冻传媒色AV国产播放 | 欧亚一卡二卡日本一卡二卡 | 玩高中女同桌肉色短丝袜脚文 | 亚洲AV无码偷拍在线观看 | 年轻的朋友4在线看中文字幕 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品