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
這部分我是看的《Linux就該這么學》這本書籍,你有興趣也可以好好看看這本書,講的非常詳細。
linuxshell編程if語句內判斷參數有哪些呢
–b 當file存在并且是塊文件時返回真 -c 當file存在并且是字符文件時返回真 -d 當pathname存在并且是一個目錄時返回真 -e 當pathname指定的文件或目錄存在時返回真 -f 當file存在并且是正規文件時返回真 -g 當由pathname指定的文件或目錄存在并且設置了SGID位時返回為真 -h 當file存在并且是符號鏈接文件時返回真,該選項在一些老系統上無效 -k 當由pathname指定的文件或目錄存在并且設置了“粘滯”位時返回真 -p 當file存在并且是命令管道時返回為真 -r 當由pathname指定的文件或目錄存在并且可讀時返回為真 -s 當file存在文件大小大于0時返回真 -u 當由pathname指定的文件或目錄存在并且設置了SUID位時返回真 -w 當由pathname指定的文件或目錄存在并且可執行時返回真。
一個目錄為了它的內容被訪問必然是可執行的。 -o 當由pathname指定的文件或目錄存在并且被子當前進程的有效用戶ID所指定的用戶擁有時返回真。
UNIX Shell 里面比較字符寫法: -eq 等于 -ne 不等于 -gt 大于 -lt 小于 -le 小于等于 -ge 大于等于 -z 空串 = 兩個字符相等 != 兩個字符不等 -n 非空串。
linux 每個if都要搭配一個fi嗎
是的,每個if語句都要用fi結束,其應用格式如下: if 條件then Command1[else Command2] #中括號表示else語句可以沒有fi #別忘了這個結尾if語句忘了結尾fi,在運行時報錯如下:*: line xx: syntax error: unexpected end of fi以上語句的意思是當"條件"的結果為真值時,進入then后面的語句command1,否則執行else語句中command2。
執行完command 或 沒有else語句,命令就走到fi結束該if語句。
Linux的if語句問題
腳本 里 -a是正則表達式的&&; ,即全部條件成立才成立,只要第一個條件不成立后面的都不會執行,\( $1 =='q' -a $1 =='Q' -a $1 =='Quit' -a $1 == 'quit' \),你每次輸入一個Q/Quit/q/quit,都只是符合其中一個條件,故這個語句值為假,然后!是當if [ ! **** ]后面的****為假時執行,即會直接輸出“NOT Quiting。.” 。
-o 是只要有一個條件成立,全部語句就成立,當你輸入Q/Quit/q/quit時,if 里面的 \( $1 =='q' -o $1 =='Q' -o $1 =='Quit' -o $1 == 'quit' \) 就是為真,前面再加上一個!,就是 假,故此時執行else后面的語句,于是輸出結果是Unknown Argument。
只要知道!是取反就可以了,講的不好見諒。
linux的if語句和條件測試語句編一個小程序,請懂得大神回答一下,萬
#!/bin/bash
echo ******************************
echo 1 Copy
echo 2 Delete
echo 3 Bakcup
echo 4 Quit
echo ******************************
read SELECT
echo you selection is $SELECT
echo ******************************
echo please input the path
read PATH
if [ -d $PATH ]
then
echo path correct!
else
echo it's not path, please try it again.
exit
fi
寫的比較簡陋,你看下
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” ]] 能達到你想要的效果。