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 "* ????"

浙公网安备 33010602011771号