⑴ shell中if怎麼判斷多個條件
if [ expression 1 ]
then
Statement(s) to be executed if expression 1 is true
elif [ expression 2 ]
then
Statement(s) to be executed if expression 2 is true
elif [ expression 3 ]
then
Statement(s) to be executed if expression 3 is true
else
Statement(s) to be executed if no expression is true
fi
⑵ 寫shell腳本怎麼寫這句話:if((a-b)*(b-c)>0),對於初學者真的好難
其實很多語言邏輯都一樣的
#! /bin/bash
# 我們這里假設 a=5 b=4 c=2
if [[ $[$[5-4]*$[4-2]] > 0 ]];then
echo "條件成立"
else
echo "條件不成立"
fi
# 上面判斷語句執行的順序是先算$[5-4] 和$[4-2] 然後在把前面2個的相乘,最後來判斷是否大於0
# 備注: 在shell中 $[]是可以做數學計算的 而且是從內向外執行的
如果還有不懂的, 歡迎繼續提問
⑶ linux 下shell 腳本 if條件,想寫 a=0且b=0 或者c!=0,應該怎麼寫啊、我寫成if [$a -eq 0] && [ $b -eq 0
root@Bizbox:~# a=0
root@Bizbox:~# b=0
root@Bizbox:~# c=5
root@Bizbox:~# if [ $a = 0 -a $b = 0 ]&&[ $c != 0 ]; then
> echo success
> fi
success
注意方括弧中前後的空格!
⑷ 關於shell 中的if 邏輯表達式。
if expression
then
commands
fi
這是if其中的一種結構,在結構中就能看到if 後面接的是什麼。
這個後邊描述的是你想要干什麼,根據你的需要去描述出來然後進行下一步的操作
這個並不是固定的。你還是看書吧。。書上寫的比這里回答的人描述的詳細。
if和then的語法 如果if和then處在同一行 中間需要用;隔開,如果不在同一行可以不用寫
if grep "file " /tmp/tmp.txt ;then 這屬於語法格式,這個是固定的。其實一行內多個命令之間都需要用;號隔開。如果不在同一行就不用考慮。就像你在終端輸入命令一樣,一行一個命令。一行多跳命令需要用;隔開。。也是這個道理。至於!取反。。!屬於操作符 舉個例子來說 $A = $B 如果結果匹配 執行 then 不匹配執行else $A != $B !=就是不等 !進行取反操作 如果判斷結果匹配 執行then 不匹配執行eslse
哇。。說了好多廢話。。我還是強烈建議你仔細看書。。
______________________________________________
1)我還是建議你看書,而且是看對書,我說的這些都是書上有的。
關於[]你不應該理解成test語法才需要 test就是[] []就是test
拋開if不講 test也可以單獨使用 比如test xxx 寫成 [xxxx]意思是一樣的。
至於里邊加的參數,就涉及到你的需求 要干什麼 要判斷字串?整數?表達式?文件?
跟用test 還是用 []並沒有太大關系 舉個例子 test $? -le 0 和 [ $? -le 0] 意思是一樣的
2)要解釋if ! grep "file" /tmp/tmp.txt ; then 首先你要明白系統所設置的操作符。比如= 比如+、-、*、/、這些都是操作符,至於! 屬於位操作符, 我下班了。有空聊
⑸ shell if 多條件判斷
#其中mkdir外面的符號是esc下來那個按鍵上的符號,表示執行命令
#!/bin/bash
if[`mkdir-p~/1/1`-a`mkdir~/2`];then
echo"成立{$?}"
else
echo"不成立{$?}"
fi
⑹ Shell編程中 if語句判斷時怎樣寫判斷條件判斷變數a若為整型變數則執行後面的語句
把if [ "$tt" ~ '/^[1-9][0-9]*$/' ] 改成
if [ "$tt" -le 0 -o "$tt" -ge 0 ] 2>/dev/null
這邊是只會做整數的比較,如果$tt不是整數就會產生錯誤信息,並不比較。然後執行else後面的動作。產生的錯誤信息可以用2>/dev/null丟掉。
如果是整數則進行[]內的比較,中間的-o表示或者,意思是整數$tt小於等於0或者大於等於0則為真,執行then後面的動作
⑺ shell 條件判斷的幾種方式
#第一種:if ...then...fi
function test1()
{
local RET=0
if [ $RET -eq 0 ];then
echo "yes"
else
echo "no"
fi
}
#第二種: []
function test2()
{
local RET=0
[ $RET -eq 0 ] && echo "yes" || echo "no"
}
#第三種: [[ ]]
function test3()
{
local RET=0
[[ $RET -eq 0 ]] && echo "yes" || echo "no"
}
#第四種 :test命令
function test3()
{
local RET=0
test $RET -eq 0 && echo "yes" || echo "no"
}
不考慮對低版本bash和對sh的兼容的情況下,用[[]]是兼容性強,而且性能比較快,在做條件運算時候,可以使用該運算符。
⑻ shell腳本中的if中多條件語句如何寫。
可以使用
if-elif-else
語法來寫多條件語句。
1、首先要理解if-else的基本用法,if條件+then操作+else操作+fi閉合,書寫方法如下:
2、if
-elif-else
語法的具體格式--if單條件多分支,書寫方法如下:
3、實例
-
if單條件多分支,這個實例的輸出結果是:a
小於
b。
4、實例
-
if多條件多分支,這個實例輸出結果是:a
等於
b,或
a小於10。
(8)shell腳本if語句的判斷條件格式擴展閱讀
1、shell語法注意事項
shell的if語法和C語言等高級語言非常相似,唯一需要注意的地方就是shell的if語句對空格方面的要求比較嚴格,如果在需要空格的地方沒有打上空格,就會報錯。
如if
[
1
==
1
];then
echo
"abc";fi中如果在少寫了if後面的空格就報錯:
2、
shell語法中[[
]]和[
]的主要區別
(1)
[
]
實際上是bash
中
test
命令的簡寫。即所有的
[
expr
]
等於
test
expr。
對
test
命令來說,
用
-eq
要進行數字比較,而你此時傳入字元串,就報錯了。
(2)
[[
]]
是內置在shell中的一個命令,它比test強大的多。支持字元串的模式匹配(使用=~操作符時甚至支持shell的正則表達式)。邏輯組合可以不使用test的-a,-o而使用&&
||。
⑼ shell腳本 if判斷條件問題
你既然已經知道這個文件叫什麼就沒有意義了。。。。理論上應該用find命令或者你知道這個目錄在系統中的什麼位置。
比如
ls | grep aaa
a=`echo $?`
b=`ls | grep aaa`
if [ $a -eq 0 ]
then
tar zcvf Name.tar.gz $b
else
echo 'Don't have this file.'
fi
⑽ shell if函數中幾種條件判斷的區別
1、整數比較:
[plain] view plain
-eq 等於,如:if [ "$a" -eq "$b" ] 或 if [ $a -eq $b ]
-ne 不等於,如:if [ "$a" -ne "$b" ]
-gt 大於,如:if [ "$a" -gt "$b" ]
-ge 大於等於,如:if [ "$a" -ge "$b" ]
-lt 小於,如:if [ "$a" -lt "$b" ]
-le 小於等於,如:if [ "$a" -le "$b" ]
== 等於,如:if if (("$a" == "$b"))
< 小於(需要雙括弧),如:(("$a" < "$b"))
<= 小於等於(需要雙括弧),如:(("$a" <= "$b"))
> 大於(需要雙括弧),如:(("$a" > "$b"))
>= 大於等於(需要雙括弧),如:(("$a" >= "$b"))
特別說明的是(())字元和括弧之間不需要留空格,但[[ ]],[]要求比較嚴格,需要留空格。
2、字元串比較,上面的-eq,-nq等公式只適用於數字比較,不適用於字元比較
[plain] view plain
= 等於,如:if [ "$a" = "$b" ]
== 等於,如:if [ "$a" == "$b" ],與=等價
[[ $a == z* ]] # 如果$a以"z"開頭(模式匹配)那麼將為true
[[ $a == "z*" ]] # 如果$a等於z*(字元匹配),那麼結果為true
[ $a == z* ] # File globbing 和word splitting將會發生
[ "$a" == "z*" ] # 如果$a等於z*(字元匹配),那麼結果為true
3、括弧之間的區別:
[[ ]],[]對括弧內變數要求嚴格且且敏感,但(())則相對寬松一些
[plain] view plain
1、if [[ $a == $b ]] 和 if [[ $a == $b ]] 等價
但if [[ $a == $b ]] 和if [[ a == b ]] 不等價
2、if (($a == $b)) 和 if (($a = $b))等價
if (($a == $b)) 和 if ((a == b)) 等價
4、多條件判斷:
&&和||適用於[[ ]]和(),-a和-o適用於[]中
舉例如下:
[plain] view plain
if ((i == 1)) 和 if [ "$i" == 1 ]等價
if [[ "$i" = 1 && "$j" = 2 ]] 和 if ((i = 1)) || ((j = 2))
5、其它說明:
!= 不等於,如:if [ "$a" != "$b" ]
這個操作符將在[[]]結構中使用模式匹配.
< 小於,在ASCII字母順序下.如:
if [[ "$a" < "$b" ]]
if [ "$a" \< "$b" ]
注意:在[]結構中"<"需要被轉義.
> 大於,在ASCII字母順序下.如:
if [[ "$a" > "$b" ]]
if [ "$a" \> "$b" ]