码迷,mamicode.com
首页 > 系统相关 > 详细

Shell 学习(三)--流程控制

时间:2019-11-06 18:28:41      阅读:89      评论:0      收藏:0      [点我收藏+]

标签:image   显示   $*   lock   分支   href   src   基本语法   block   

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"

技术图片

技术图片

Shell 学习(三)--流程控制

标签:image   显示   $*   lock   分支   href   src   基本语法   block   

原文地址:https://www.cnblogs.com/jianshuai520/p/11806881.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!