shell流程控制

条件语句

  1. 算术运算符(拓)
    在这里插入图片描述

(1)简单示例1
在这里插入图片描述

(2)简单示例2
在这里插入图片描述
注:==也可用于判断两个字符串是否相等,$ ?返回0代表两值相等;$ ?返回1代表两值不同以下凡用到$ ?均为该意

(3)简单示例3
在这里插入图片描述
2. 关系运算符——只支持数字不支持字符串

在这里插入图片描述
(1)简单示例1

在这里插入图片描述
(2)简单示例2

在这里插入图片描述
(3)简单示例3

在这里插入图片描述

  1. 布尔运算符

在这里插入图片描述
(1)简单示例1
在这里插入图片描述

(2)简单示例2

在这里插入图片描述

(3)简单示例3
在这里插入图片描述

  1. 字符串运算符

在这里插入图片描述

(1)简单示例1
在这里插入图片描述

(2)简单示例2

在这里插入图片描述
5. 文件测试运算符

在这里插入图片描述
(1)简单测试1

在这里插入图片描述

(2)简单测试2

在这里插入图片描述

  1. 类C风格书写

(1)简单示例1
在这里插入图片描述

(2)简单示例2
在这里插入图片描述

[[ 条件表达式 ]]与[ 条件表达式 ]不同

[[ ]]是[ ]的plus版

(1)简单示例1

在这里插入图片描述

(2)简单示例2
在这里插入图片描述

在这里插入图片描述

(3)简单示例3
在这里插入图片描述

(4)简单示例4
在这里插入图片描述

注意事项:

  • [[ ]]与[ ]与条件表达式之间都需空格否则会报错
  • [ ]中使用大于、小于必须使用转义否则会被理解为重定向
  • [[ ]]相较[ ]新增模式匹配模式

test

test [选项] 文件名
test ${变量名1} [选项] ${变量名2}

(1)简单示例1
在这里插入图片描述

(2)简单示例2
在这里插入图片描述
(3)简单示例3
在这里插入图片描述

选择分支

if

  • 单分支——“限高单行道”
if 条件语句
then
	代码块
fi

在这里插入图片描述
简单示例如下:

#接收一个参数,参数为hello时输出你好
read -p "请输入一个参数" a

if [ ${a} = "hello" ]
then
	echo "你好"
fi
echo "程序结束"

运行效果如下:
在这里插入图片描述

  • 双分支——“限高岔路口”
if 条件语句
then
	代码块
else
	代码块
fi

在这里插入图片描述
简单示例如下:

if [ $1 -eq 1 ]
then
	echo "分支1"
else
	echo "分支2"
fi
echo "程序结束"

运行效果如下:
在这里插入图片描述

  • 多分支——“限高多岔路口”
if 条件语句
then
	代码块
elif 条件语句
then
	代码块
...
else
	代码块
fi

简单示例如下:

if [ $1 == 1 ]
then
	echo "分支1"
elif [ $1 == 2 ]
then
	echo "分支2"
else
	echo "分支3"
fi
echo "程序结束"

运行效果如下:
在这里插入图片描述

case

与java或C语言中switch有异曲同工之妙,且有其独到之处

:<<a
case格式如下:
case 变量 in
情况1)
        代码块
;;
情况2)
        代码块
;;
...
;;
情况n)
        代码块
;;
esac 
a

read -p "请输入a的值" a

case ${a} in
        1)
                echo "a为1"
        ;;
        2)
                echo "a为2"
        ;;
        3)
                echo "a为3"
        ;;
        *)
                echo "a是其他"
        ;;
esac

在这里插入图片描述

循环

循环是为了多次执行同一代码块

for

#for格式
for 变量名 in [{值1..值n}|值1 值2 值3]
do
	代码块
done

注:[ | ]表示可选且必选

  • 简单示例1如下
for val in {1..5};do echo ${val}; done
for val in 1 2 3 4 5;do echo ${val}; done

在这里插入图片描述

  • 简单示例2如下:
for val in `seq 5`;do echo ${val}; done
for val in $(seq 5);do echo ${val}; done

在这里插入图片描述

  • 简单示例3如下:
for var in {0..5..2}; do echo ${val}; done
for val in {2..5..2}; do echo ${val}; done

在这里插入图片描述

  • 简单示例4如下:
for val in {5..0};do echo ${val}; done
for val in {5..0.. -2};do echo ${val}; done

在这里插入图片描述

特殊情况(不写for后in)如下:

for var             
do
        echo ${val}; 
done

运行效果如下:
在这里插入图片描述

while——“当…时进入循环”

#格式如下
while 条件
do
	代码块
done

简单示例如下:

#循环输出0-10
#!/bin/bash
a=0

while [ ${a} -lt 11 ]
do
        echo ${a}
        let a++
done

运行效果如下:
在这里插入图片描述

until——“直到…时循环结束”

#格式如下
until 条件
do
	代码块
done

简单示例如下:

#打印1-10
#!/bin/bash
a=1

until [ ${a} -eq 11 ]
do
        echo ${a}
        let a++
done

运行效果如下:
在这里插入图片描述

循环控制语句

  • continue——跳过一次,不结束循环
#输出1-10跳过3的倍数
for i in {1..10}
do
        if [ $[ ${i} % 3 ] -eq 0 ]
        then
                continue
        fi
        echo ${i}
done

运行效果如下:
在这里插入图片描述

  • break——直接跳出循环
for i in {1..10}
do
	echo "${i}"
	if [ ${i} = 5 ]
	then
		echo "循环结束"
		break
	fi
done

运行效果如下:
在这里插入图片描述

  • exit——直接退出脚本
for i in {1..10}
do
	echo "${i}"
	if [ ${i} -eq 4 ]
	then
		exit
	fi
done
echo "程序结束"

运行效果如下:
在这里插入图片描述

拓展

  • 随机数的生成
#生成随机数
echo $[RANDOM]

在这里插入图片描述

#生成0-5的随机数
echo $[RANDOM%6]

在这里插入图片描述

  • 数组与循环
a=('张三' '李四' '王五')

for i in ${a[*]}
do
	echo ${i}
done

运行效果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值