栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

shell编程(七)流程控制

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

shell编程(七)流程控制

shell编程(七)流程控制
    • 一、if else 语句
      • 1.1、三种语法
        • 1.1.1、单个if语法:
        • 1.1.2、if else语法:
        • 1.1.3、if elif... else语法
    • 二、case in语句
    • 三、while语句
      • 4.1、单行while语法
      • 4.2、多行while语法
      • 4.3、死循环
    • 四、until语句
    • 五、for语句
      • 5.1、循环方式一
      • 5.2、循环方式二
      • 5.3、循环方式三
      • 5.4、死循环
    • 六、select语句
      • 5.4、死循环
    • 六、select语句

一、if else 语句

介绍:if else语句和其他编程语言中的if else一样,都是用于逻辑判断

1.1、三种语法 1.1.1、单个if语法:
if 条件
then 
   命令
fi
1.1.2、if else语法:
if 条件
then
   命令
else
   命令
fi
1.1.3、if elif… else语法
if 条件1
then
	命令
elif 条件2
then
    命令
elif 条件3
then
   命令
...
else
   命令n
fi

示例一:普通的if多分支写法

#bin/bash
read -p "请输入您的考试成绩:" score
if ((${score} >=0 && ${score} <60 ))
then
  echo "您的考试成绩是:${score},不及格"
elif ((${score} >=60 && ${score} <70 ))
then
  echo "您的考试成绩是:${score},及格"
elif ((${score} >=70 &&  ${score}<80))
then
  echo "您的考试成绩是:${score},中等"
elif ((${score} >=80 &&  ${score}<90))
then
  echo "您的考试成绩是:${score},良好"
elif ((${score} >=90 &&  ${score}<=100))
then
  echo "您的考试成绩是:${score},优秀"
else
   echo "您输入的考试成绩不合法"
fi

结果:

示例二、if else 单行写法

if((1==1));then echo "条件成立";else echo "条件不成立";fi

示例三、if结合逻辑运算符和shell程序退出状态码

每个linux执行命令执行完成后都会有一个退出状态码,一般我们使用$?获取退出状态码,可以结合if语句,来实现我们的一些需求,退出状态码为0代表执行成功,非0代表执行失败,不过也有一些特殊的命令0和非代表的不是成功和失败,比如diff比较两个文件是否有差别的时候,0是代表没有差别,当有差别的时候会返回非0。

演示if语句加退出状态码加逻辑运算符实现我们的需求

#bin/bash
read -p "请输入文件全名:" file_name
read -p "请输入数据:" data
if [[ -w ${file_name} && -n ${data} ]]
then
  echo ${data} > ${file_name}
  echo "文件写入成功"
else
  echo "文件写入失败"
fi

结果

注意:

其中:-w ${file_name} 执行状态码为0 ,-n ${data} 执行状态码也为0,两个条件逻辑与之后,条件为true

示例四、if语句结合test命令

首先我们对test命令进行介绍

shell中的test命令用于检查某个条件是否成立,它可以进行数值、文件、字符串三个方面进行测试

功能和单方括号[]一样。

语法:

if test 数字1 options 数字2
then 
 执行命令
fi

test用于整数比较测试

options参数

test用于字符串比较测试

options参数

#bin/bash
name1=zhangsan
name2=lisi
if test $name1 != $name2; then
    echo "name不相等"
fi
if test -n $name1; then
  echo "name长度不为0"
fi

test用于文件比较测试

options参数

这里和整数,字符串比较用法一样,此处就不演示了。

二、case in语句

介绍:case in 语句为多分支语句,可以用来多分支判断,用于匹配一个值与一个模式,如果匹配成功,则执行相应的语句。当分支较多的时候,并且判断条件简单,可以用case in语句。

语法:

case 值 in
匹配模式1)
     命令1
     命令2
     ...
     ;;
匹配模式2)
     命令1
     命令2
     ...
     ;;
匹配模式3)
     命令1
     命令2
     ...
     ;;
*)
     命令1
     命令2
     ...
     ;;   
esac

注意:每一种匹配模式必须以)结尾,匹配模式可以为常量或者变量值,当发现满足某个匹配模式后会执行相应的语句,以;;结尾,;;类似于break的作用,;;执行完成之后,不会再去执行其他匹配模式里面的命令,如果没有匹配,则执行最后一个*),最后一个匹配模式,类似于兜底的作用,esac则代表语句结束。

其中匹配模式可以为一个数字,字符串,或者是一个正则表达式

但是匹配模式只支持简单的正则表达式,如下:

演示:

#bin/bash
read -p "请输入一个0-7的数字:" number
case $number in
1)
  echo "今天是星期一"
  ;;
2)
  echo "今天是星期二"
  ;;
3)
  echo "今天是星期三"
  ;;
4)
  echo "今天是星期四"
  ;;
5)
  echo "今天是星期五"
  ;;
6)
  echo "今天是星期六"
  ;;
0|7)#这里用到了简单的正则匹配
  echo "今天是星期日"
  ;;
*)
  echo "您输入的数字无效"
esac

结果:

三、while语句

介绍:while用于循环一系列的语句

两种语法

4.1、单行while语法
while 条件;do 命令;done
4.2、多行while语法
while 条件
do
  命令1
  命令2
  命令3
  ...
  continue;#while中continue用于跳出当前这一次循环,进入下一次循环
  break;#break用于结束整个循环
done

演示:

#bin/bash
read -p "请输入一个数字:" number
i=0
while ((i<=$number))
do
  let i++
  if ((i==3)); then
    echo "跳过"
      continue;
  fi
  if ((i==5)); then
      echo "退出"
      break;
  fi
    echo "hello${i}"
done

结果:

4.3、死循环
while :
do
 命令
done
#或者
while true
do
 命令
done
四、until语句

介绍:until语句和while语句正好相反,当条件为false的时候会一直循环,当条件为true的时候,结束循环

语法:

until 条件
do 
   命令
done

演示:

#bin/bash
read -p "请输入一个数字:" number
i=0
until ((i>number))
  do
     let i++
     echo "循环第${i}次"
done

结果:

五、for语句

介绍:for循环和其他编程语言的用法一样,都是用于循环语句中

5.1、循环方式一

语法:

单行语法:

for item in array;do 命令1;命令2;done

多行语法:

for item in array
do 
  命令
done

item 代表循环变量,array代表数组或者一系列的枚举值

演示:

#!/bin/bash
array=(1 2 3 4 5 6)
for item in ${array[@]}
do
  echo "$item"
done

结果:

5.2、循环方式二

语法:

单行语法:

for item in {start..end};do 命令;done

多行语法:

for item in {start..end}
do
  命令
done

其中:

​ start:起始范围

​ end:结束范围

注意:start和end两个值必须为整数

演示:

#!/bin/bash
#bin/bash
for item in {1..10}
do
    echo "$item"
done

结果:

5.3、循环方式三

语法:

单行语法:

for((i=start;i<=end;i++));do 命令;done

多行语法:

for((i=start;i<=end;i++))
do 
  命令
done

演示:

#!/bin/bash
array=(1 2 3 4 5 6)
for (( i = 0; i < ${#array[*]}; i++ )); do
    echo "${array[i]}"
done

结果:

5.4、死循环

语法:

for((;;))
do
  命令
done
六、select语句

介绍:select语句用来进行菜单的选择输入,select语句增强交互性,可以选择带编号的菜单,输入不同的编号显示不同的菜单,并执行不同的功能,select适合终端交互,是shell独有的循环。

语法:

select menu in menu1 menu2 menu3...menun
do
  命令
done

注意:select是死循环,输入空值,或者输入的值无效都不会终止循环,只有碰到break才会终止循环,命令执行的时候,会输出#?表示可以选择不同的编号。

演示:

#!/bin/bash
select item in "唱" "跳" "rap" "篮球"; do
  echo $item
done
echo "您的爱好是$item"

EkiTBo9S-1656827145645)]

5.4、死循环

语法:

for((;;))
do
  命令
done
六、select语句

介绍:select语句用来进行菜单的选择输入,select语句增强交互性,可以选择带编号的菜单,输入不同的编号显示不同的菜单,并执行不同的功能,select适合终端交互,是shell独有的循环。

语法:

select menu in menu1 menu2 menu3...menun
do
  命令
done

注意:select是死循环,输入空值,或者输入的值无效都不会终止循环,只有碰到break才会终止循环,命令执行的时候,会输出#?表示可以选择不同的编号。

演示:

#!/bin/bash
select item in "唱" "跳" "rap" "篮球"; do
  echo $item
done
echo "您的爱好是$item"

结果:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1003025.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号