if 语句
我不得不说,bash的shell编程和C有着让人恶心的相似,刚接触的时候很容易混淆。
基本格式:
if condition
then operation
elif condition
then operation
else
operation
fi
我必须说的是书上用的是statement(语句)这个词,而不是operation(操作)。然而事实上,我们在那个位置写入的语句,不就是操作吗?
shell编程存在的意义就是让我们用最便捷的方式将自己的愿望施加于系统。
在condition中,格式是很容易出错的:
使用expression作为condition的时候,expression一定要用中括号括起来,比如:
if [ $1 > $2 ]
如果是command作为condition,就不需要中括号了:
if ls -R /
(嘿嘿,这个例子很幽默)
这里有一个容易混淆的地方:
>和<这两个符号并不能用于数学判断,它们是用来判断字符串的,对于字母先后顺序判断,就是字典排序的方法(注意,这里并不存在<=或者>=),=号用于判断两字符串是否相同,别问我!=是用来做什么的,引用震泽的话来说:你猜!
用于数学判断的符号是 -lt -gt -le -ge -ne -eq
小于 大于 小于等于 大于等于 不等 相等
还有一些参数用于判断一个文件是否存在、它是否可写、是否可读……等等,这些叫做测试操作符,我已经整理出来了,都在《测试操作符》文章里面。
格式中的elif相当于C的else if,而fi则相当于C预处理器中的#ENDIF。
条件也是可以进行逻辑上的嵌套的,&&和||(与和或)就是干这个的,含义和C一样,用法也差不多,仅以“与”为例:
if ls && ls -R
if [ $a = $b ] && ls
if [ $a = $b ] && [ $c = $d ]
PS:
按理说应该把流程控制放在一篇文章里,不过那样做的话这篇文章就很长了~读起来会让人生厌的(连我自己都读不下去,嘿嘿)。
阅读(761) | 评论(0) | 转发(0) |