Shell 条件结构

条件结构-if

shell中也有流程控制条件分支语句,格式与python有点类似。

语法如下:

if test-commands; then
  consequent-commands;
elif more-test-commands; then
  more-consequents;
else alternate-consequents;
fi

执行test-commands,如果返回状态是0,则执行consequent-commands。如果test-commands返回一个非零状态,则依次执行每个elif列表,如果它的退出状态为零,则执行相应的more- consequences,并完成命令。如果else alternate- consequences存在,并且if和elif命令都是非零的退出状态,则执行alternate- consequences。返回状态是最后执行的命令的退出状态,如果没有测试条件为真,则返回0。

if-then-fi(单分支)

语法格式:

if condition
then
    command1 
    command2
    ...
    commandN 
fi

写成一行(适用于终端命令提示符):

if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi

末尾需要用fi结尾。

if-then-else-fi(二分支)

语法格式:

if condition
then
    command1 
    command2
    ...
    commandN
else
    command
fi

if-then-elif-else-fi(多分支)

语法格式:

if condition1
then
    command1
elif condition2 
then 
    command2
else
    commandN
fi

举例:
以下实例判断两个变量是否相等:

read a
read b

if [ $a == $b ]
then
        echo "a 等于 b"
elif [ $a -gt $b ]
then
        echo "a 大于 b"
elif [ $a -lt $b ]
then
        echo "a 小于 b"
else
        echo "其他"
fi

输出结果:
bash test.sh 
2
3
a 小于 b

条件结构 case

case … esac 为多选择语句,与其他语言中的 switch … case 语句类似,是一种多分枝选择结构,每个 case 分支用右圆括号开始,用两个分号 ;; 表示 break,即执行结束,跳出整个 case … esac 语句,esac(就是 case 反过来)作为结束标记。

可以用 case 语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。

case … esac 语法格式如下:

casein
模式1)
    command1
    command2
    ...
    commandN
    ;;
模式2)
    command1
    command2
    ...
    commandN
    ;;
esac

case 工作方式如上所示,取值后面必须为单词 in,每一模式必须以右括号结束。取值可以为变量或常数,匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;。

取值将检测匹配的每一个模式。一旦模式匹配,则执行完匹配模式相应命令后不再继续其他模式。如果无一匹配模式,使用星号 * 捕获该值,再执行后面的命令。

下面的脚本提示输入 1 到 3,与每一种模式进行匹配:

举例:

echo "输入数字"
read num
case $num in
        1) echo "选择了1";;
        2) echo "选择了2";;
        3) echo "选择了3"
esac

输出:
输入1到3的数字
4
超出范围

输入1到3的数字
1
选择了1    

匹配字符串:

echo "输入字符"
read str
case $str in
        "python") echo "python语言";;
        
        "java") echo "java语言";;
        
        "php") echo "php语音";;
        
        *) echo "不存在"
esac

输出:
输入字符
php
php语音

输入字符
abc
不存在
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

久醉绕心弦,

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值