shell腳本中常常會用到邏輯判斷:if語句判斷。shell
if邏輯判斷有三種格式:bash
一、if 條件; then 語句; fi 二、if 條件; then 語句; else 語句; fi 三、if 條件; then 語句; elif 條件; then 語句; else 語句; fi
if邏輯判斷舉例:code
a=5 if [ $a -gt 3 ]; then echo ok; fi //[]裏面,每一個參數之間都須要空格間隔開 #!/bin/bash a=1 if [ $a -gt 3 ] then echo ok else echo no ok fi #!/bin/bash a=3 if [ $a -gt 4 ] then echo ">4" elif [ $a -gt 6 ] then echo ">6" else echo no ok fi
邏輯判斷裏的比較符號:字符串
-gt 大於 -lt 小於 -ge 大於等於 -le 小於等於 -eq 等於 -ne 不等於 //另外中用法,用兩個小括號就能使用數學符號形式的表達 (($a>1))、(($a<1))、(($a==1))、(($a>=1))、(($a<=1))
if語句中的多條件:input
if [ $a -gt 5 ] && [ $a -lt 9 ];then....; fi if [ $a -gt 5 ] || [ $a -lt 3 ];then....; fi
[ -f file ] //是否爲普通文件,且存在 [ -d file ] //是否爲目錄,且存在 [ -e file ] //是否存在文件或目錄 [ -r file ] //對執行shell腳本用戶而言,是否可讀 [ -w file ] //對執行shell腳本用戶而言,是否可寫 [ -x file ] //對執行shell腳本用戶而言,是否可執行 [ ! -f file ] //加!號取反、文件且不存在
示例:數學
#!/bin/bash f="/tmp/lgs" if [ -f $f ] then echo $f exist else touch $f fi #!/bin/bash //經常使用簡化寫法 f="/tmp/lgs" [ -f $f ] && rm -f $f
if [ -z "$a" ] //變量a的值是否爲空 if [ -n "$a" ] //變量a的值是否不爲空 //a爲文件名能夠不用雙引號,判斷文件內容不爲空。 if grep -q '123' 1.txt;then...;fi //-q爲不顯示過濾行:若是1.txt中含有123字符串的行,則執行then語句 if [ ! -e file ];then....;fi //文件不存在,則執行then語句
case語句在工做中用的比較少,但也有用處it
case 變量名 in //匹配到case的變量等於某個值,執行下面的語句 值1) 語句 ;; 值2) 語句 ;; 值*) //*表明除以上值之外的值 語句 ;; esac case中的值,能夠用|號,便可以匹配多個值: 2|3|4) 語句;;
shell中與用戶交互輸入數值變量
read -p "please input a number: " n
exit 退出可返回值:file
exit 1 //退出執行腳本,返回值1 echo $? 返回的結果,就是exit返回的值。