Loading

2.Bash应用(一)

一.逻辑控制

1. if结构

  ❖ if [ condition ] ; then …;fi
  ❖ if [ condition ] ; then …;else …;fi

$ if [ -e test ];then echo exist;else echo not exist;fi
not exist

  ❖ if [ condition ] ; then …;elif …;fi
  ❖ 简单的逻辑可以使⽤ && || 去替代

$ echo "1" && echo "2" || echo "3" && echo "4" || echo "6" && echo >"7" && echo "8" || echo "9"
1
2
4
7
8

  ❖ 条件可以⽤命令返回值代替

2.case结构

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

3.select

      ❖ Select var in var_list;do ….;done;
  ❖ 菜单选择,⼀般与case结构⼀起⽤

4.for循环

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

5.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 "${ss[@]}";do echo $x ;done

6.wile循环

  ❖ i=0;while [ $i -lt 3 ] ;do echo $i;((i=i+1));done
  ❖ ⼀个有⽤的⼩技巧。⼀⾏⾏的读取⽂件内容 while read 
  line;do echo $line;done < /tmp/tmp

i=0
$ while [ $i -lt 3 ];do echo $i;((i=i+1));done
0
1
2

7.until

  ❖ ⾃⾏查资料,不再介绍。因为until 语法在以前的⼤多数
  编程语⾔⾥没有。⽐较新的语⾔,python,ruby等有,
  为了精简的原则,不推荐使⽤。
  ❖ While 可以替代until 循环

8.退出控制

  ❖ return 函数返回
  ❖ exit 脚本进程退出
  ❖ break 退出当前循环
  ❖ continue 跳过当前的循环,进⼊下⼀次循环

9.Bash运行环境

1.Shell 运⾏环境概念

  ❖ bash下还可以再重新启动⼀个shell,这个shell是sub shell,原shell会复制⾃⾝给他。在sub shell中定义的变量,会随着sub shell的消亡⽽消失
  ❖ () ⼦shell中运⾏
  ❖ $(ls) 表⽰执⾏ls后的结果,与``作⽤⼀致,不过可以嵌套
  ❖ {} 当前shell中执⾏
  ❖ $$ 当前脚本执⾏的pid
  ❖ & 后台执⾏
  ❖ $!运⾏在后台的最后⼀个作业的PID(进程ID)

2.shell输入输出

  ❖ Read ⽤来读取输⼊,并赋值给变量
  ❖ echo ,printf可以简单输出变量。
  ❖ > file 将输出重定向到另⼀个⽂件
  ❖ >> 表⽰追加 等价于tee -a
  ❖ < file 输⼊重定向
  ❖ | 表⽰管道,也就是前⼀个命令的输出传⼊下⼀个命令的输⼊

3.文件描述符

  ❖ 输⼊⽂件—标准输⼊0 
  ❖ 输出⽂件—标准输出1 ❖ 错误输出⽂件—标准错误2 ❖ curl
  ❖ 使⽤ 2>&1 >/tmp/tmp < /tmp/tmp

4.通配

  ❖ Bash可以⾃动扩展特定的关键词
  ❖ echo * 在shell中表⽰当前⽂件
  ❖ echo ???
  ❖ 放⼊到引号中可以避免转义
  ❖ echo "* ????"
posted @ 2020-12-29 23:13  西柚不吃五花肉  阅读(109)  评论(0)    收藏  举报