shell脚本的结构性语句

本文介绍了Shell脚本中的分支语句,包括if-else结构和多路分支case语句,以及循环语句,如for和while/until循环。还提到了break和continue在循环控制中的作用,以及shell通配符和正则表达式在模式匹配中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

shell的结构性语句即 分支和循环

  • 分支语句
if 条件;then
    ...
    代码块
else
    ...
    代码块
fi             #结尾

例:

#!/bin/bash
read var
if [ ${var}x = "goodx" ];then
    echo "good"
else
    echo "not good"
fi

输出结果:

当输入"good" "gooo" ""时,分别输出"good" "not good" "not good"

虽然shell的test的规则是,测试成功为0,测试失败为1(参考我之前博客:shell的功能性(测试)语句-->test),但是在分支shell的结构性语句中仍然是遵循条件满足则执行,不满足则执行else后的语句。

分支语句的结束由开始关键字的反序表示

if --> fi
case --> esac

  • 多路分支语句
case 字符型变量 in
    模式1)
        ...
        ;;#类似于C语言中的break,但是在shell里面;;一定要
    模式2)
        ...
        ;;
    ...
    模式n)
        ...
        ;;
esac        #结尾
filename=$1
case $filename in
    *.c) #匹配所有以.c结尾的文件名
        echo "c source file"
        ;;
    *.h)
        echo "header file"
        ;;
    *.cpp)
        echo "c++ source file"
        ;;
esac
case语句真正强大的地方在于它可以使用模式而不是固定的字符来匹配。一个模式是由正规字符和特殊通配符组成的字符串,该模式可以用正则表达式
    * shell通配符 代表任意多个(也可以是0个)字符
    ? shell通配符 代表一个任意字符
  • 循环语句
  1. for循环
for 变量名 in 单词表
do
    ...循环体语句
done
"单词表":以空白符分隔开来的字符串列表,比如: a ab c ddd
for循环执行的次数就是“单词表”中的单词的个数,并且每
次执行的时候,“变量”的值就取下一个单词的值
类似于python的for循环

例子:

for i in a b c ddd
do
    echo $i
done
#该shell脚本将陆续输出 a b c ddd
  1. while循环
while 命令或表达式
do
    ...
done
  1. until循环
until 命令或表达式
do
    ...
done
until和while的功能相似,所不同的是until只当测试的
命令或表达式的值为假的时候才执行循环体的命令列表,
条件成立,则退出循环,这一点和while相反
  1. break 和 continue
break n
    跳出n层循环,n不写时默认为1,和C语言含义一致
continue n
    跳过n层循环,n=2时,跳过本次循环和上一层循环
    n不写时默认为1,和C语言含义一致

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值