shell流程控制

本文介绍了shell脚本中的if、ifelse、ifelse-ifelse语句,展示了如何进行进程判断、条件分支和循环操作,包括for和while循环,以及case...esac的选择结构。通过实例演示了如何在信息技术环境中进行逻辑控制和数据处理。
摘要由CSDN通过智能技术生成

1、if 语句:

主要用于判断,相当于java se中的if,我们还是采用之前的例子test-shell.sh

if condition
then
    command1 
    command2
    ...
    commandN 
fi

比如,我们现在通过前面学习的知识查找一个进程,如果进程存在就打印true

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

注意:末尾的fi就是if倒过来拼写

执行效果如下

 

2、if else 语句:

主要用于判断,相当于java se中的if else,我们还是采用之前的例子test-shell.sh。

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

上接上面的例子,如果找不到sshAAA(此处可以随便输入一个)进程,我们就打印false

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

执行效果如下

 

3、if else-if else 语句:

主要用于判断,相当于java se中的if else-if else

if condition1
then
    command1
elif condition2 
then 
    command2
else
    commandN
fi

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

我们继续使用上面的例子(test-shell.sh )

a=10
b=20
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

执行效果如下

 

4、for 循环

主要用于循环,相当于java se中的for循环,我们还是采用之前的例子test-shell.sh

for循环格式为

for var in item1 item2 ... itemN
do
    command1
    command2
    ...
    commandN
done

顺序输出当前列表中的字母:

for loop in A B C D E F G 
do
    echo "顺序输出字母为: $loop"
done

执行效果如下

 

5、while循环

主要用于循环,相当于java se中的while循环

while循环用于不断执行一系列命令,也用于从输入文件中读取数据

语法格式为

while condition
do
    command
done

以下是一个基本的while循环,测试条件是:如果int小于等于10,那么条件返回真。int从0开始,每次循环处理时,int加1。

还是采用之前的例子test-shell.sh

#!/bin/bash
int=1
while(( $int<=10 ))
do
    echo "输出的值为:"$int
    let "int++"
done

执行效果如下图

 

6、case ... esac语句

主要用于分支条件选择,相当于java se中的switch case循环

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

还是采用之前的例子test-shell.sh

case ... esac 语法格式如下:

case 值 in
模式1)
    command1
    command2
    command3
    ;;
模式2)
    command1
    command2
    command3
    ;;
*)
    command1
    command2
    command3
    ;;
esac

case 后为取值,值可以为变量或常数。

值后为关键字 in,接下来是匹配的各种模式,每一模式最后必须以右括号结束,模式支持正则表达式。

下面通过v的值进行case--esac

v="czbk"

case "$v" in
   "czbk") echo "传智播客"
   ;;
   "baidu") echo "baidu 搜索"
   ;;
   "google") echo "google 搜索"
   ;;
esac

执行效果如下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

悠然予夏

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

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

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

打赏作者

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

抵扣说明:

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

余额充值