shell的流程控制

Shell脚本提供了多种流程控制结构,用于根据条件执行不同的命令或控制脚本的执行流程。其中包括if-else语句、test命令和条件判定符[[ … ]]等

  1. if-else 判断:
if [$#-ne 2]; then
  echo "缺少参数"
else
  echo "有2个参数"
fi
  1. test命令:
    test命令用于测试条件是否为真,并返回相应的退出状态码。它可以进行各种条件判断,如比较数字、字符串、文件属性等。
if test -x /path/to/file
  echo "文件存在"
else
  echo "文件不存在"

3.[[ … ]]条件判定符:
[[ … ]]是Bash Shell中的条件判定符,与test命令类似,但提供了更多的功能和灵活性。它支持字符串模式匹配、正则表达式匹配和逻辑运算等

if [[$#-ne 2]]; then
  echo "缺少参数"
else
  echo "有2个参数"
fi
  1. for 循环:
for i in 1 2 3 4 5; do
  echo $i
done
  1. while 循环:
i=1
while [$i -le 5]; do
  echo $i
  i++
done
  1. until 循环:
i=1
while [$i -le 5]; do
  echo $i
  i++
done
  1. until-else 循环:
i=1
while [$i -le 5]; do
  echo $i
  i++
else
  echo "已经达到5个数字"
fi

8.case语句用于根据某个变量的值执行不同的操作。其基本语法为:

case 变量 in
模式1)
    命令1
    ;;
模式2)
    命令2
    ;;
*)
    默认命令
    ;;
esac

其中,变量是需要进行判断的变量,模式是用来匹配变量的模式,命令是在匹配成功时需要执行的命令,而“;;”表示一个模式的结束。默认命令是在所有模式都不匹配时执行的命令。

下面是一个例子,用于判断输入的数字是1、2、3还是其他数字:

echo "请输入一个数字:"
read num

case $num in
1)
    echo "你输入的是1"
    ;;
2)
    echo "你输入的是2"
    ;;
3)
    echo "你输入的是3"
    ;;
*)
    echo "你输入的不是1、2、3"
    ;;
esac

在这个例子中,首先通过read命令获取用户输入的数字,然后使用case语句进行判断。如果用户输入的是1、2或3,则分别输出相应的提示信息;如果用户输入的不是1、2、3,则输出默认的提示信息。

需要注意的是,case语句中的模式可以使用通配符来匹配多个值。例如,模式可以使用*来匹配任意字符,[...]来匹配指定的字符范围,?(pattern)来匹配0个或1个字符,*(pattern)来匹配0个或多个字符,+(pattern)来匹配1个或多个字符,@(pattern)来匹配指定的模式。

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值