专栏首页波波烤鸭shell编程04【流程控制语句】

shell编程04【流程控制语句】

流程控制语句

一、if语句

1.语法

if condition1
then
    command1
elif condition2 
then 
    command2
else
    commandN
fi

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

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

2.举例

#!/bin/bash
a=10
b=20
if [ $a -eq $b  ]
then
   echo "a 等于 b"
elif [ $a -lt $b ]
then
   echo "a 小于 b"
else
   echo " a 大于 b"
fi

输出

[root@hadoop-node01 ~]# . s8.sh 
a 小于 b

注意 [ condition ] (注意condition前后要有空格)

二、case语句

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

case 值 in
模式1)
    command1
    command2
    ...
    commandN
    ;;
模式2)
    command1
    command2
    ...
    commandN
    ;;
esac

举例

#!/bin/bash
case $1 in
start)
    echo "开始执行了..."
    ;;
stop)
    echo "执行完成...."
    ;;
*)
     echo "其他操作"

esac

输出:

[root@hadoop-node01 ~]# vim s9.sh 
[root@hadoop-node01 ~]# . s9.sh 
其他操作
[root@hadoop-node01 ~]# . s9.sh start
开始执行了...
[root@hadoop-node01 ~]# . s9.sh stop
执行完成....

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

三、循环语句

1.for循环

for循环一般格式为

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

写成一行

for var in item1 item2 ... itemN; do command1; command2… done;

举例

#!/bin/bash
for i in 1,2,3,4
do
   echo $i
done

echo "------1------"
for i in {1..5}
do
   echo $i
done

echo "------2----"
for a in {1..5} ; do echo $a; done;

echo "-----3------"

for((i=0;i<10;i++))
do
  echo $i
done
echo "-----4-----"

for((i=0;i<5;i++)); do echo $i ;done;

输出:

[root@hadoop-node01 ~]# . s10.sh 
1,2,3,4
------1------
1
2
3
4
5
------2----
1
2
3
4
5
-----3------
0
1
2
3
4
5
6
7
8
9
-----4-----
0
1
2
3
4

break和continue关键字

#!/bin/bash
for i in {1..10}
do
   if [ $i -eq 5 ]
   then
        break;
   fi
   echo $i
done
echo "-------------"
for i in {1..10}
do
     if [ $i -eq 5 ]
     then
        continue
     fi
     echo $i
done

输出

[root@hadoop-node01 ~]# . s11.sh 
1
2
3
4
-------------
1
2
3
4
6
7
8
9
10

2.where循环

  while循环用于不断执行一系列命令,也用于从输入文件中读取数据;命令通常为测试条件。

while condition
do
    command
done

举例

#!/bin/bash
i=1
while(( $i<=5))
do
   echo $i
   let i++
done

  使用中使用了 Bash let 命令,它用于执行一个或多个表达式,变量计算中不需要加上 $ 来表示变量

无限循环

while :
do
    command
done

三、read语句

语法

read -p(提示语句)-n(字符个数) -t(等待时间 单位秒) 

案例

[root@hadoop-node01 ~]# read -p 请输入密码: -n 10 -t 10 password
请输入密码:123456
[root@hadoop-node01 ~]# echo $password
123456

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Dubbo03【管理控制台和监控中心搭建】

      要搭建管理控制台和监控中心我们首先需要下载dubbo的源码并编译,首先去GitHub上下载Dubbo源码: https://github.com/apac...

    用户4919348
  • Dubbo04【Zookeeper存储数据的数据信息】

      Zookeeper 是 Apacahe Hadoop 的子项目,是一个树型的目录服务,支持变更推送,适合作为 Dubbo 服务的注册中心,工业强度较高,可用...

    用户4919348
  • Java解释器模式(Interpreter)

    用户4919348
  • shell入门系列(8)for

    title: shell入门系列(8)for date: 2019-01-16 10:00:00 +0800 update: 2019-01-16 10:0...

    suveng
  • Shell遍历数字递增方法小记

    写shell脚本的时候,我们经常会利用到数字循环,比如指定多少行至多少行删除, 扫描IP网段等,下面这里记录总结一下几种方法。

    后场技术
  • 【批处理学习笔记】第十六课:语句结构(2)

    for语句(循环结构)     for语句可以实现类似于C语言里面的循环结构,当然for语句的功能要更强大一点,通过不同的开关可以实现更多的功能。for语句有多...

    Angel_Kitty
  • 如何指定Spark1作业中Driver和Executor使用指定范围内端口

    在CDH集群中提交Spark作业,大家也都知道Spark的Driver和Executor之间通讯端口是随机的,Spark会随选择1024和65535(含)之间的...

    Fayson
  • 数据分析:《三国演义》魏蜀吴联盟深度解析

    读三国,就一定要弄清楚国与国、人与人之间的斗争。 三国的历史,就是一部精彩的斗争史,无论是前期的曹袁之争,中期的三国缠斗,还是后期的魏蜀单挑,都充满的了智慧和权...

    沉默的白面书生
  • 工程代码不简单

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    用户2615200
  • css动画是可以暂停的

    css动画大家都不陌生,但是你知道css动画是可暂停的吗?如果你不知道就来看看吧。

    用户4962466

扫码关注云+社区

领取腾讯云代金券