Bash编程-逻辑控制

逻辑控制

  • 条件if
  • 分支case、select
  • 循环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 如果文件可执行,则结果为真
  • [[]][]的扩展语法,在老的sh里并不支持。推荐用[]

Case结构

  • 用于条件太多的情况。每一个条件最后使用两个分号结尾,不可缺少。
case $var in
p1)...;;
p2)...;;
...
pn)...;;
*)...;;
esac

Select

  • Select var in var_list;do ....done;
  • 菜单选择,一般与case结构一起用

For循环

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

For遍历循环

  • 用于递归数组,还可以递归以空格隔开的字符串序列。或者是某个命令的返回值。
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循环

  • 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循环

退出控制

  • return 函数返回
  • exit 脚本进程退出
  • break 退出当前循环
  • continue 跳过当前的循环,进入下一次循环
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容