女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何在bash中使用條件語(yǔ)句

CHANBAEK ? 來(lái)源:TIAP ? 作者:TIAP ? 2022-12-09 17:27 ? 次閱讀

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

在 bash 中使用 if 語(yǔ)句

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

if [ condition ]; then
  your code
fi

if 語(yǔ)句以 fi(與if相反)結(jié)束。

注意空格:

  • 在開(kāi)始括號(hào)之后,與結(jié)束括號(hào)之前,都必須要有一個(gè)空格,否則 shell 將報(bào)錯(cuò);
  • 條件運(yùn)算符(=,==,<=等)前后必須有空格,否則將報(bào)錯(cuò)。

我們創(chuàng)建一個(gè)示例腳本 root.sh,當(dāng)你以 root 身份運(yùn)行該腳本的時(shí)候,才會(huì)進(jìn)入 if 語(yǔ)句:

#!/bin/bash


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

whoami 命令輸出當(dāng)前用戶名。在 bash 變量教程中,我們介紹了 $(command) 結(jié)構(gòu)的語(yǔ)法用于命令替換。

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

圖片

if-else 語(yǔ)句

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

#!/bin/bash


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

此時(shí),當(dāng)你以普通用戶運(yùn)行腳本的時(shí)候,會(huì)輸出 You are not root,如下所示:

$ ./root.sh
You are not root

使用 else if 語(yǔ)句

當(dāng)有多個(gè)表達(dá)式(條件)時(shí),可以使用 elif(else-if)語(yǔ)句。看下面的例子,我們創(chuàng)建一個(gè)名為 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)。在前面的文章中我們介紹過(guò)如何給 bash 腳本傳遞參數(shù),現(xiàn)在我們運(yùn)行一下 age.sh,并傳遞不同的參數(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.

需要注意的是,在條件語(yǔ)句中,可以有多個(gè) elif ,但是只能有一個(gè) else,且必須使用 fi 關(guān)閉。

在 bash 中嵌套使用 if 語(yǔ)句

if 語(yǔ)句可以嵌套使用。看如下 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

上述腳本接受溫度作為參數(shù),然后顯示一條反應(yīng)天氣情況的信息。當(dāng)溫度大于 5 度的時(shí)候,就會(huì)進(jìn)入嵌套的 if 語(yǔ)句。我們運(yùn)行一下該腳本:

$ ./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 語(yǔ)句

我們還可以在 bash 中使用 case 語(yǔ)句來(lái)替換多個(gè) if 語(yǔ)句,其構(gòu)造的一般語(yǔ)法如下:

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

注意:

  • 條件語(yǔ)句最后總會(huì)包含一個(gè)空格和右括號(hào) );
  • 條件語(yǔ)句后的命令以?xún)蓚€(gè)分號(hào) ;; 結(jié)束,其前面的空格可有可沒(méi)有;
  • case 語(yǔ)句 以 esac 結(jié)尾(與 case 相反)。

case 語(yǔ)句在處理模式匹配或正則表達(dá)式的時(shí)候特別有用。作為演示,我們創(chuàng)建一個(gè)名為 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

上述腳本接受一個(gè)字符作為參數(shù),并顯示該字符是大寫(xiě)字母,還是小寫(xiě)字母、數(shù)字還是特殊字符。

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

上述腳本中我使用了通配符 * 來(lái)定義默認(rèn)字符,它相當(dāng)于 if 語(yǔ)句中的 else 語(yǔ)句。

bash 中的測(cè)試條件

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

下表列出一些最常用的測(cè)試條件:

條件 相當(dāng)于
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 存在且是一個(gè)目錄.
-f**FILE **FILE 存在且是一個(gè)常規(guī)文件.
-L**FILE **FILE 存在且是一個(gè)軟鏈接.
**STRING1 =**STRING2 STRING1 等于STRING2
**STRING1 !=**STRING2 STRING1 不等于STRING2
-z**STRING1 **STRING1 是空的

上面這些測(cè)試條件不需要專(zhuān)門(mén)記,可以在 man 手冊(cè)中查看:

$ man test

我們創(chuàng)建一個(gè)名為 filetype.sh 的腳本,用來(lái)檢查文件是常規(guī)文件、目錄還是軟鏈接:

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

在腳本的開(kāi)始,我們檢查一下參數(shù)的數(shù)量,如果沒(méi)有參數(shù)或者有多個(gè)參數(shù),腳本會(huì)輸出一條消息并退出。下面是運(yùn)行情況:

$ ./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

在同一行中編寫(xiě) if else 語(yǔ)句

到目前為止,我們上述代碼都是在規(guī)范的縮進(jìn)格式下寫(xiě)的,這是一種規(guī)范的寫(xiě)法,但并不是非這樣寫(xiě)不可。

當(dāng)你只想在 shell 中看到結(jié)果時(shí),可以在單行中使用 if else 語(yǔ)句。

假設(shè)我們有如下腳本:

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

可以在一行代碼中這樣寫(xiě):

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

大家可以運(yùn)行一下上面的腳本,看看結(jié)果。

基本上,就是在命令結(jié)束后添加分號(hào) ; ,然后寫(xiě)下一條語(yǔ)句。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 命令
    +關(guān)注

    關(guān)注

    5

    文章

    728

    瀏覽量

    22671
  • 腳本
    +關(guān)注

    關(guān)注

    1

    文章

    397

    瀏覽量

    28341
  • Bash
    +關(guān)注

    關(guān)注

    0

    文章

    57

    瀏覽量

    10394
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    何在bash shell腳本中使用變量

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

    何在bash腳本中創(chuàng)建第一個(gè)數(shù)組

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

    何在bash中使用運(yùn)算符來(lái)執(zhí)行算術(shù)運(yùn)算

    在編寫(xiě) bash 腳本的時(shí)候,經(jīng)常會(huì)遇到需要計(jì)算數(shù)學(xué)結(jié)果的情況,比如需要計(jì)算磁盤(pán)剩余空間、文件大小、密碼到期時(shí)間、主機(jī)數(shù)量、網(wǎng)絡(luò)帶寬等。
    發(fā)表于 12-07 17:13 ?1886次閱讀
    如<b class='flag-5'>何在</b><b class='flag-5'>bash</b><b class='flag-5'>中使</b>用運(yùn)算符來(lái)執(zhí)行算術(shù)運(yùn)算

    鴻蒙TypeScript入門(mén)學(xué)習(xí)第6天:【條件語(yǔ)句

    條件語(yǔ)句用于基于不同的條件來(lái)執(zhí)行不同的動(dòng)作。 TypeScript 條件語(yǔ)句是通過(guò)一條或多條語(yǔ)句
    的頭像 發(fā)表于 04-01 13:51 ?965次閱讀
    鴻蒙TypeScript入門(mén)學(xué)習(xí)第6天:【<b class='flag-5'>條件</b><b class='flag-5'>語(yǔ)句</b>】

    JavaScript 【4】 條件語(yǔ)句

    JavaScript if...Else 語(yǔ)句條件語(yǔ)句用于基于不同的條件來(lái)執(zhí)行不同的動(dòng)作。條件語(yǔ)句
    發(fā)表于 07-17 10:36

    何在C程序中使用匯編

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

    淺談條件語(yǔ)句的可綜合性

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

    條件判斷語(yǔ)句(if語(yǔ)句

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

    詳解Python條件語(yǔ)句

    在 Python 中,if...else 是一種條件語(yǔ)句,可以根據(jù)給定的條件執(zhí)行不同的操作。這個(gè)語(yǔ)句通常用于控制程序的流程。
    的頭像 發(fā)表于 04-19 15:39 ?985次閱讀

    Verilog中的If語(yǔ)句和case語(yǔ)句介紹

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

    條件語(yǔ)句/循環(huán)語(yǔ)句simulink的實(shí)現(xiàn)方法(一)

    條件語(yǔ)句和循環(huán)語(yǔ)句是計(jì)算機(jī)編程中常用的兩種控制結(jié)構(gòu)
    的頭像 發(fā)表于 07-21 16:48 ?1.3w次閱讀
    <b class='flag-5'>條件</b><b class='flag-5'>語(yǔ)句</b>/循環(huán)<b class='flag-5'>語(yǔ)句</b>simulink的實(shí)現(xiàn)方法(一)

    Python條件條件語(yǔ)句

    if語(yǔ)句 對(duì)于if語(yǔ)句,若條件判定為真,那么后面的語(yǔ)句塊就會(huì)被執(zhí)行。若條件判定為假,語(yǔ)句塊就會(huì)被
    的頭像 發(fā)表于 09-12 16:45 ?789次閱讀

    BASH shell腳本篇—條件命令

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

    python if語(yǔ)句多個(gè)條件怎么用

    所有條件都必須為T(mén)rue才會(huì)執(zhí)行if語(yǔ)句中的代碼塊,or運(yùn)算符表示只要有一個(gè)條件為T(mén)rue就會(huì)執(zhí)行代碼塊,而not運(yùn)算符則用于反轉(zhuǎn)條件的結(jié)果。 以下是一個(gè)示例代碼,演示了如
    的頭像 發(fā)表于 11-21 16:45 ?3826次閱讀

    sql語(yǔ)句多個(gè)條件怎么連接

    SQL語(yǔ)句中使用了兩個(gè)條件,age >= 25表示年齡大于等于25,age OR運(yùn)算符用于滿足多個(gè)條件中的至少一個(gè)條件的情況。例如,
    的頭像 發(fā)表于 11-23 11:34 ?2913次閱讀