日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux脚本多个条件比较大小,如何在shell if语句中表示多个条件?

發布時間:2025/3/19 linux 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux脚本多个条件比较大小,如何在shell if语句中表示多个条件? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

經典技術(轉義元字符):

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

then echo abc

else echo efg

fi

我已經$g用雙引號將引用括起來;一般來說,這是一個好習慣。嚴格來說,并不需要括號,因為的優先級-a,并-o使得它糾正,甚至沒有他們。

請注意,-aand -o運算符是testaka 的POSIX規范的一部分[,主要是為了向后兼容(例如,因為它們是test7th Edition UNIX 的一部分),但是POSIX將它們明確標記為“過時”。Bash(請參閱條件表達式)似乎搶先了經典和POSIX的含義,-a并-o帶有自己的接受參數的替代運算符。

一定要小心,您可以使用更現代的[[運算符,但是請注意,例如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運行示例:

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

您不需要像使用引號一樣引用變量[[,[因為它不是以相同的方式[是單獨的命令。

這不是一個經典的問題嗎?

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

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

then echo abc

else echo efg

fi

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

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

then echo abc

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

then echo abc

else echo efg

fi

在動作像回聲一樣瑣碎的情況下,這還不錯。當要重復的動作塊為多行時,重復會很痛苦,并且較早的版本之一是可取的-否則您需要將動作包裝到在不同then塊中調用的函數中。

總結

以上是生活随笔為你收集整理的linux脚本多个条件比较大小,如何在shell if语句中表示多个条件?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。