第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何在shell if語(yǔ)句中表示多個(gè)條件?

如何在shell if語(yǔ)句中表示多個(gè)條件?

PIPIONE 2020-02-04 15:14:08
我想代表多個(gè)條件,例如:if [ ( $g -eq 1 -a "$c" = "123" ) -o ( $g -eq 2 -a "$c" = "456" ) ]   then      echo abc;  else      echo efg;   fi  但是當(dāng)我執(zhí)行腳本時(shí),它顯示syntax error at line 15: `[' unexpected, 第15行顯示的是....這種情況怎么了?我猜這是有問(wèn)題的()。
查看完整描述

3 回答

?
叮當(dāng)貓咪

TA貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個(gè)贊

經(jīng)典技術(shù)(轉(zhuǎn)義元字符):


if [ \( "$g" -eq 1 -a "$c" = "123" \) -o \( "$g" -eq 2 -a "$c" = "456" \) ]

then echo abc

else echo efg

fi

我已經(jīng)$g用雙引號(hào)將引用括起來(lái);一般來(lái)說(shuō),這是一個(gè)好習(xí)慣。嚴(yán)格來(lái)說(shuō),并不需要括號(hào),因?yàn)榈膬?yōu)先級(jí)-a,并-o使得它糾正,甚至沒(méi)有他們。


請(qǐng)注意,-aand -o運(yùn)算符是testaka 的POSIX規(guī)范的一部分[,主要是為了向后兼容(例如,因?yàn)樗鼈兪莟est7th Edition UNIX 的一部分),但是POSIX將它們明確標(biāo)記為“過(guò)時(shí)”。Bash(請(qǐng)參閱條件表達(dá)式)似乎搶先了經(jīng)典和POSIX的含義,-a并-o帶有自己的接受參數(shù)的替代運(yùn)算符。


一定要小心,您可以使用更現(xiàn)代的[[運(yùn)算符,但是請(qǐng)注意,例如Bash和Korn Shell中的版本不必相同。


for g in 1 2 3

do

    for c in 123 456 789

    do

        if [[ ( "$g" -eq 1 && "$c" = "123" ) || ( "$g" -eq 2 && "$c" = "456" ) ]]

        then echo "g = $g; c = $c; true"

        else echo "g = $g; c = $c; false"

        fi

    done

done

在Mac OS X上使用Bash 3.2.57運(yùn)行示例:


g = 1; c = 123; true

g = 1; c = 456; false

g = 1; c = 789; false

g = 2; c = 123; false

g = 2; c = 456; true

g = 2; c = 789; false

g = 3; c = 123; false

g = 3; c = 456; false

g = 3; c = 789; false

您不需要像使用引號(hào)一樣引用變量[[,[因?yàn)樗皇且韵嗤姆绞絒是單獨(dú)的命令。


這不是一個(gè)經(jīng)典的問(wèn)題嗎?


我會(huì)這么想的。但是,還有另一種選擇,即:


if [ "$g" -eq 1 -a "$c" = "123" ] || [ "$g" -eq 2 -a "$c" = "456" ]

then echo abc

else echo efg

fi

的確,如果您閱讀了該autoconf工具或相關(guān)軟件包的“便攜式外殼”指南,則建議使用“ ||”和“ &&” 這種符號(hào)。我想您甚至可以做到:


if [ "$g" -eq 1 ] && [ "$c" = "123" ]

then echo abc

elif [ "$g" -eq 2 ] && [ "$c" = "456" ]

then echo abc

else echo efg

fi

在動(dòng)作像回聲一樣瑣碎的情況下,這還不錯(cuò)。當(dāng)要重復(fù)的動(dòng)作塊為多行時(shí),重復(fù)會(huì)很痛苦,并且較早的版本之一是可取的-否則您需要將動(dòng)作包裝到在不同then塊中調(diào)用的函數(shù)中。


查看完整回答
1 反對(duì) 回復(fù) 2020-02-04
?
瀟湘沐

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超6個(gè)贊

在Bash中:


if [[ ( $g == 1 && $c == 123 ) || ( $g == 2 && $c == 456 ) ]]


查看完整回答
1 反對(duì) 回復(fù) 2020-02-04
?
守著星空守著你

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超8個(gè)贊

使用/bin/bash以下方法將起作用:


if [ "$option" = "Y" ] || [ "$option" = "y" ]; then

    echo "Entered $option"

fi


查看完整回答
1 反對(duì) 回復(fù) 2020-02-04
  • 3 回答
  • 0 關(guān)注
  • 6577 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)