条件测试
1、条件测试test或[ ](测试条件是真是假)
例如:字符串比较 #!/bin/bash read datatest "$data" == "hello" //注意等号两边有空格 或者 [ $data == "hello" ]echo $? //上一条命令的运行结果,成功为0,失败为1例如:两数比较大小 #!/bin/bash data=200[ $data -eq 100 ]echo $?[ $data -lt 100 ]echo $?[ $data -le 100 ]echo $?[ $data -gt 100 ]echo $?[ $data -ge 100 ]echo $?例如:测试与、非逻辑运算 |
2、if/then/elif/else/fi
#!/bin/bash read dataif [ "$data" -eq 100 ];then echo "100"elif [ "$data" -eq 200 ];then echo "200"else : // :为空命令,该命令不做任何事fi#!/bin/bash read data[ "$data" -eq 100 ] && { //成立执行花括号里面,否则执行括号外echo "yes" exit 0}echo "no"#!/bin/bash read data[ "$data" -eq 100 ] || { //不成立执行花括号里面,否则执行括号外echo "yes" exit 0}echo "no" |
3、case/esac
#!/bin/bash read valcase "$val" in start | -s | -start | -START ) echo "start" ;; 'stop' ) echo "stop" ;; '*' ) echo "*" ;;esac |
循环语句
1、for/do/done
写法一: #!/bin/bash //for i in {1..100} for i in {a..z} do echo "$i"done运行结果: 打印a...z的字母 写法二: #!/bin/bash for(( i=0;i<=100;i++ ))do echo "$i"done运行结果: 打印1...100的数字 |
2、while/do/done && until/do/done
求1~100 间的偶数的和 #!/bin/bash sum=0ret=0for i in {1..100}do let ret=i%2 if [ $ret -eq 0 ];then let sum+=i fidoneecho $sum运行结果:2550 |
3、shell脚本的调试方法
-n : 读一遍脚本中的命令但不执行,用于检查脚本中的语法错误 -v : 将执行的每一条命令和如果打印出来 -x : 提供跟踪执行信息,将执行过程打印出来 这些选项的使用方法: (1) 在命令行提供参数: bash -x ./test.sh (2) 在脚本开头提供参数:#!/bin/bash -x (3) 在脚本中用set命令启用或禁用 set-x 和 set+x分别表示启用执行过程和关闭执行过程 |
数组
bash不支持多维数组,只支持一维数组;只支持序列下标,不支持关联式下标 用shell编写进度条: #!/bin/bash i=0str=''arr=('|' '/' '-' '\\')index=0while [ $i -le 100 ]do let index=i%4 printf "[%-100s][%d%%][%c]\r" "$str" "$i" "${arr[$index]}" sleep 0.1 let i++ str+='#'doneprintf "\n" |