A. linux shell的if語句
echo "你繼續嗎?Y or N"
read ANSWER
if [ 「$ANSWER」 = 「Y」 -o 「$ANSWER」 = 「y」 ] ; then
echo "你選擇了$ANSWER";
elif [ 「$ANSWER」 = 「N」 -o 「$ANSWER」 = 「n」 ] ; then
echo "你選擇了$ANSWER";
else
echo "輸入錯誤"
exit
fi
-----你試試
B. 如何使用shell腳本中的if語句檢查條件
[root@localhost ~]# cat c
a=1
if [ $a -eq 1 ];then
echo a 等於1
else
echo a 不等於1
fi
[root@localhost ~]# sh c
a 等於1
C. shell中查看if條件的幫助手冊,應執行哪條命令
可以使用true命令。
在shell中條件語句是「if-then」,if語句後面是一個命令執行結束的退出狀態碼是0,則執行then部分的命令,否則then不執行;fi是if的結束標志。
D. 關於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 首先你要明白系統所設置的操作符。比如= 比如+、-、*、/、這些都是操作符,至於! 屬於位操作符, 我下班了。有空聊
E. Linux shell編程,這個命令if [ "$pid" ]; then...。什麼時候if條件判斷為true和false呢
只有當pid為空時,if條件才會為false。如果pid是程序獲取的進程號,那麼就是當進程存在時(pid不為空)為true,當進程不存在時(pid為空)為false。
1、pid=""
if條件為false,如下面輸出2:
pid=""
if["$pid"]
then
echo"1"
else
echo"2"
fi
2、pid=任何非空值
if條件為true,如下面輸出1:
pid="0"
if["$pid"]
then
echo"1"
else
echo"2"
fi
希望能夠幫助到你,你的好評是我前進的動力,謝謝!
F. 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" ]
G. Linux bash/sh/shell編程中的if語句應該怎麼寫
line="#abcmatch
BCD"
REGEXP="^[#]"
#
變數賦值不需要前綴$
if
[[
$line
=~
$REGEXP
]]
&&
[[
$line
!=
''
]];
then
#粗心
[[
]]
要配對使用
你寫成了
[[
]
[
]]
true
#shell
不能使用空的if
結構,至少要有一個命令。
可以使用true命令
。
echo
yes
else
echo
NO
fi
###
end
另外Bash
不支持完全的正則表達式。[[
「$line」
=~
「$REGEXP」
]]
不能達到你想要的效果。
需要使用echo
"$string"|
grep
-qP
/regexp/
Zsh
支持完整的正則表達式,
[[
「$line」
=~
「$REGEXP」
]]
能達到你想要的效果。
H. shell的if命令如何判斷一個文件中所含指定字元串
1、字元串判斷
1)str1 = str2當兩個串有相同內容、長度時為真 ;
2)str1 != str2 當串str1和str2不等時為真 ;
3)-n str1 當串的長度大於0時為真(串非空) ;
4)-z str1 當串的長度為0時為真(空串) ;
5)str1 當串str1為非空時為真。
2、數字的判斷
1)int1 -eq int2兩數相等為真;
2)int1 -ne int2兩數不等為真;
3)int1 -gt int2int1大於int2為真;
4)int1 -ge int2int1大於等於int2為真;
5)int1 -lt int2int1小於int2為真;
6)int1 -le int2int1小於等於int2為真。
3、文件的判斷
1)-r file用戶可讀為真;
2)-w file用戶可寫為真;
3)-x file用戶可執行為真;
4)-f file文件為正規文件為真;
5)-d file文件為目錄為真;
6)-c file文件為字元特殊文件為真;
7)-b file文件為塊特殊文件為真;
8)-s file文件大小非0時為真;
9)-t file當文件描述符(默認為1)指定的設備為終端時為真。
I. 求linux shell 中if的寫法
主要是格式問題:
if [[ $jg == false ]]; then
echo -e "\033[41;37m $sj $jg \033[5;m"
elif [[ $jg != false ]]; then
echo -e "\033[42;37m $sj $jg \033[1;m"
fi
注意中間的空格,假如是字元串匹配,最好加上引號。
J. liunx 下的shell語句 if [ ! -d /$1/$2/$3/ ]是什麼意思
liunx 下的shell語句 if [ ! -d /$1/$2/$3/ ]這是判斷某文件夾是否存在,$1, $2, $3都是變數,操作方法如下:
1、判斷文件的基本格式。[ 操作符 文件或目錄 ]。