Shell 学习(三)--流程控制
1 if判断
- 基本语法
if [ 条件判断式 ];then 程序 fi 或者 if[ 条件判断式 ] then 程序 elif[ 条件判断式 ] then 程序 fi
注意事项:(1) [ 条件判断式 ],中括号和条件判断式之间必须要有空格。(2) 推荐使用第二种方式
- 应用实例
案例: 编写一个shell程序,请输入参数,大于等于60,则输出“及格了”,如果小于60,则输出“不及格”
#!/bin/bash if [ $1 -ge 60 ] then echo "及格了" elif[ $1 -lt 60] then echo "不及格" fi
2 case 语句
- 基本语法
这个case语法很不一样,我开始很不习惯,有点像C的感觉
case $变量名 in "值1") 如果变量的值等于值1,则执行程序1 ;; "值2") 如果变量的值等于值2,则执行程序2 ;; ···省略其他分支··· *) 如果变量的值都不是以上的值,则执行此程序 ;; esac
- 应用实例
案例:当命令行参数是1时,输出“周一”,当参数是2时,输出“周二”,其他情况输出other。
#!/bin/bash case $1 in "1") echo "周一" ;; "2") echo "周二" ;; *) echo "other" ;; esac
3 for循环
- 基本语法1
for 变量 in 值1 值2 值3 .. do 程序 done
应用实例
打印命令行输入的参数[会使用到$* 和$@]
#!/bin/bash #使用$* for i in "$*" do echo "the num is $i" done echo "=====" #使用$@ for j in "$@" do echo "the num is $j" done
执行后为这样:
基本语法2
这个语法就很像java中的for循环
for((初始值;循环控制条件;变量变化)) do 程序 done
应用实例:从1加到100的值输出显示
但是这个很奇怪,前面判断条件都是用-gt -ge 来着。这里可以直接用<=
#!/bin/bash #定义一个变量 SUM=0 for((i=0;i<=100;i++)) do SUM=$[$SUM+$i] done echo "sum=$SUM"
4 while 循环
- 基本语法
while [ 条件判断式 ] do 程序 done
应用实例
案例:从命令行输入一个数n,统计从1+...+n 的值是多少
#!/bin/bash SUM=0 i=0 while [$i -le $1] do SUM=$[$SUM+$i] i=$[$i+1] done echo "sum=$SUM"