Bash編程-邏輯控制

邏輯控制

  • 條件if
  • 分支case、select
  • 循環(huán)for、while、 until
  • break和continue
  • 有生之年也許你只需要用到if、for、while

If結構

  • if [ condition] ; then ..;fi
  • if [ condition ] ; then ..;else ..;fi
  • if [ condition ] ; then ..;elif ...;fi
  • 簡單的邏輯可以使用&& | |去替代
  • [ -f file ] && echo file exist | | echo file not exist
  • 條件可以用命令返回值代替

條件判斷的類型

  • 算術判斷
  • 字符串判斷
  • 邏輯判斷
  • shell內置判斷

算術判斷

  • [ 2 -eq 2 ] 相等
  • [ 2 -ne 2 ] 不等
  • [ 3 -gt 1 ] 大于
  • [ 3 -ge 3 ] 大于等于
  • [ 3 -lt 4 ] 小于
  • [ 3 -le 3 ]小于等于
  • (())也可以表示算術比較。((10>= 8)) ,((10==10)),

字符串比較

  • [ string1 = string2 ] 如果兩字符串相同,則結果為真
  • [ string1 != string2 ] 如果兩字符串不相同,則結果為真
  • [ -n "$var" ] 如果字符串不是空,則結果為真
  • [ -z "$var" ] 如果字符串是空,則結果為真
  • [[ "xxxx" == x* ] 在表達式中表示0或者多個字符
  • [[ xx == x?? ]] 在表達式中表示單個字符
  • 在引用變量的時候要記得加雙引號[ -z "$a" ]否則當a未定義時會語法報錯

邏輯判斷

  • [ 2 -ge 1 -a 3 -ge 4 ];echo$?
  • [ 2 -ge 1 -0 3 -ge 4 ];echo$?
  • [[ 2 -ge 1 && 3 -ge 4 ]];echo$?
  • [[ 2 -ge 1 || 3 -ge 4 ]];echo$?
  • [ !2 -ge 1 ];echo$?

內置判斷

  • -e file 如果文件存在,則結果為真
  • -d file 如果文件是一個子目錄,則結果為真
  • -f file 如果文件是一個普通文件,則結果為真
  • -r file 如果文件可讀,則結果為真
  • -s file 如果文件的長度不為0,則結果為真
  • -w file 如果文件可寫,則結果為真
  • -x file 如果文件可執(zhí)行,則結果為真
  • [[]][]的擴展語法,在老的sh里并不支持。推薦用[]

Case結構

  • 用于條件太多的情況。每一個條件最后使用兩個分號結尾,不可缺少。
case $var in
p1)...;;
p2)...;;
...
pn)...;;
*)...;;
esac

Select

  • Select var in var_list;do ....done;
  • 菜單選擇,一般與case結構一起用

For循環(huán)

for(( c1 ;c2;c3 ));
  do
done
for((i=0;i<10;i++));do echo $i;done

For遍歷循環(huán)

  • 用于遞歸數(shù)組,還可以遞歸以空格隔開的字符串序列?;蛘呤悄硞€命令的返回值。
for f in $array[*]; do
...
done
ss="aa bb cc dd";for x in $ss;do echo $x;done
for x in `ls` ;do echo $x;done
ss=(aa bb cc "sss dd");for x in "${s[@]}";do echo $x;done

While循環(huán)

  • while設置條件
i=0; 
while ((i<3));do
  echo $i; ((i=i+1);
done
  • 一行行的讀取文件內容
  • while read line; do echo $line ; done < /tmp/tmp

until

i=0;
until ((i>3));do
echo $i; .
((i+=1));
done
  • while可以替代until循環(huán)

退出控制

  • return 函數(shù)返回
  • exit 腳本進程退出
  • break 退出當前循環(huán)
  • continue 跳過當前的循環(huán),進入下一次循環(huán)
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容