shell脚本基本语法(3)

shell脚本基本语法(3)

流程控制语句

if条件语句

if语句的格式如下:

# 格式1
if 条件
then
    代码块
fi

# 格式2
if 条件; then
    代码块
fi

# 格式3
if 条件; then
    代码块1
else
    代码块2
fi

# 格式4
if 条件; then
    代码块1
elif 条件; then
    代码块2
elif 条件; then
    代码块n
else
    代码块n+1
fi

for循环语句

for循环语句的格式如下:

# 格式1,shell风格
for arg [in list]
do
    命令
done
# 格式2,c风格
for((表达式1;表达式2;表达式3))
do
    echo $i
done

while循环语句

while循环语句的格式如下:

# 格式1,shell风格
while[条件]
do
    命令
done

# 格式2,c风格
while((表达式))
do
    命令
done

until循环语句

until循环语句的条件为假时反复运行,直到条件变为真才结束。格式如下:

# 格式1,shell风格
until[条件]
do
    命令
done

# 格式2,c风格
until((表达式))
do
    命令
done

循环语句中,可以使用breakcontinue跳出循环。

case分支语句

case分支语句的格式如下:

case "$var" in
"$cond1")
    命令
;;
"$cond2")
    命令
;;
*)
    命令
;;
esac

可以使用通配符*默认条件。类似c语言里,switch语句的default。

条件测试

文件测试条件

  1. -e 文件存在
  2. -f 普通文件 eg:[-f ~/.profile]
  3. -s 文件长度不为0
  4. -d 文件是目录
  5. -b 文件是块设备文件。
  6. -c 文件是字符设备
  7. -p 文件是管道
  8. -h/-L 文件是符号连接
  9. -S 文件是Socket
  10. -t 是一个关联到终端的文件描述符。(一般用来检测在一个给定脚本中的stdin[-t0]或者[-t1]是否是一个终端)
  11. -r 文件可读
  12. -w 文件可写
  13. -x 文件可执行
  14. -g 文件有SGID标识 eg:[-g /bin/su]
  15. -u 文件有SUID标识 eg:[-u /usr/bin/sudo]
  16. -k 具有粘滞位。eg:[-k /tmp]
  17. -O 测试文件拥有者
  18. -G 文件组ID与测试者相同
  19. -N 从文件最后被阅读到现在,是否被修改过。
  20. -f1 -nt f2 f1文件较新 eg: [~/.profile -nt ~/.bashrc]
  21. -f1 -ot f2 f1文件较旧
  22. -f1 -ef f2 两个文件是同一个文件的硬连接
  23. ! 反转以上测试结果,若没有条件则返回true.

整数比较

  1. -eq 等于 eg: ["$m" -eq "$n"]
  2. -ne 不等于
  3. -gt 大于
  4. -ge 大于等于
  5. -lt 小于
  6. -le 小于等于
  7. < 小于 eg: (("$m" < "$n"))
  8. <= 小于等于
  9. > 大于
  10. >= 大于等于

字符串比较

  1. = 相等 eg: ["str1" = "$str2"]
  2. != 不相等
  3. > 小于
  4. -z 长度为0
  5. -n 长度不为0

混合比较

test支持多个表达式之间进行逻辑运算然后得到一个真值。

  1. -a 与运算 eg: ["$1" -ge 0 -a "$1" -le 100]
  2. -o 或运算 eg: ["$1" -ge 0 -o "$1" -le 100]

关于技术交流

此处后的文字已经和题目内容无关,可以不看。
qq群:825695030
微信公众号:嵌入式的日常
如果上面的文章对你有用,欢迎打赏、点赞、评论。二维码

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

theboynoName

感谢鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值