Shell脚本学习-语法篇(上)

Shell脚本学习-语法篇(上)

一、条件测试

1.条件测试:test [
命令test或[可以测试一个条件是否成立,如果测试结果为真,则该命令的退出状态为0,如果测试结果为假,则为1(与C语言的逻辑刚好相反)。
[是一个命令的名字,传给命令的各个参数之间应该用空格隔开。
测试命令:
[ -d DIR ]:如果DIR存在并且是一个目录则为真
[ -f FILE ]:如果FILE存在且是一个普通文件则为真
[ -z STRING ]:如果STRING的长度为零则为真
[ -n STRING ]:如果STRING的长度非零则为真
[ STRING1=STRING 2 ]:如果两个字符串相同则为真
[ STRING1!=STRING 2 ]:如果两个字符串不相同则为真
整数的比较:
-eq(等于)   -ne(不等于)    -lt(小于)
-gt(大于)   -ge(大于等于)  -le(小于等于)




字符串的比较:
==(等于) !=(不等于)  =(等于)但不推荐使用
带与、或、非的测试命令
[ !EXPR ]:EXPR可以是任意一种的测试,!表示逻辑反
[ EXPR1 -a EXPR2 ]:-a表示逻辑与
[ EXPR1 -o EXPR2 ]:-o表示逻辑或

[和[[的不同在于[[支持通配符和正则表达式
&&相当于“if...then”
||相当于“if not...then"
2.if/then/elif/else/fi
如果两条命令写在同一行则需要用分号;隔开,一行只写一条命令就不需要写了;另外,then后面有换行,但这条命令没有写完,Shell会自动续行,把下一行接在then后面当作一条命令处理。
注意:命令和参数之间必须用空格隔开
if命令的参数组成一条子命令,如果该子命令的退出状态为真,则执行then后面的子命令,如果维嘉则执行elif、else或者fi后面的子命令。
if后面的子命令通常是测试命令,但也可以是其他命令。Shell脚本中没有{},用fi表示if语句的结束。
3.case/esac
Shell脚本中没有switch,但有case,Shell脚本中的case可以匹配字符串和Wildcard,每个匹配分支可以有若干条命令,末尾必须以;;结束,执行时找到第一个匹配的分支并执行相应的命令,然后直接跳到esac之后,不用break。
$1是一个特殊变量,在执行脚本时自动取值为第一个命令行参数,也就是start,所以进入start分支执行相关的命令。




二、循环语句

循环体不能为空,条件判断的条件分支不能出现空语句,冒号,条件永远成立,退出码为0。
方法一:



方法二:



方法三:推荐使用。




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值