对shell脚本里if语句的一点剖析
2014-02-09 21:34
369 查看
写过shell脚本的肯定写过这样一段:if[-d dir]
then
echo"success"
else
echo"failed"
fi
凡是说到if的时候书里都会提到这么两条规则:
1、“[”的右边和“]”的左边必须有空格;
2、如果要把then和if放到同一行,就要加个分号,写成 if [-d /bin];then 这样的形式。 大多数的书都介绍到这里就为止了,我也一度死记硬了这两条规则,我还一直认为shell脚本没规律、记不住、太难写。其实不然,直到今天我才发现::~ $ which [
/usr/bin/[ 原来“[”是个命令,和ls、rm一样是一个命令。经查,“[”命令和test命令的功能、用法都基本一样,在有的版本的linux中“[”就是test的一个链接。
这就好解释了,[ -d 其实就是一个命令带一个参数,就像ls –a,命令和参数之间当然必须有空格。只不过“[”有一点特殊,它的最后一个参数必须是“]”,参数之间也必须有空格,这就很好解释第一条规则。then和if放到同一行,就要在“]”后加个分号来告诉“[”命令到此结束,不然就会把then当成最后一个参数了。
好了,原来一切都是这么合情合理,shell脚本的设计者不会没事找事搞那么复杂,只是“[”这么奇怪的命令名不太能接受罢了。
最后再多说一句,if后面可以跟各种语句,比如if echo “hello”也是合法的,判断的依据就是这条语句是否执行成功,当然了if后面跟着用&&或||连接的多条语句也是可以的。http://hi.baidu.com/roovent/item/87ec485efa0ad314aaf6d779
then
echo"success"
else
echo"failed"
fi
凡是说到if的时候书里都会提到这么两条规则:
1、“[”的右边和“]”的左边必须有空格;
2、如果要把then和if放到同一行,就要加个分号,写成 if [-d /bin];then 这样的形式。 大多数的书都介绍到这里就为止了,我也一度死记硬了这两条规则,我还一直认为shell脚本没规律、记不住、太难写。其实不然,直到今天我才发现::~ $ which [
/usr/bin/[ 原来“[”是个命令,和ls、rm一样是一个命令。经查,“[”命令和test命令的功能、用法都基本一样,在有的版本的linux中“[”就是test的一个链接。
这就好解释了,[ -d 其实就是一个命令带一个参数,就像ls –a,命令和参数之间当然必须有空格。只不过“[”有一点特殊,它的最后一个参数必须是“]”,参数之间也必须有空格,这就很好解释第一条规则。then和if放到同一行,就要在“]”后加个分号来告诉“[”命令到此结束,不然就会把then当成最后一个参数了。
好了,原来一切都是这么合情合理,shell脚本的设计者不会没事找事搞那么复杂,只是“[”这么奇怪的命令名不太能接受罢了。
最后再多说一句,if后面可以跟各种语句,比如if echo “hello”也是合法的,判断的依据就是这条语句是否执行成功,当然了if后面跟着用&&或||连接的多条语句也是可以的。http://hi.baidu.com/roovent/item/87ec485efa0ad314aaf6d779
相关文章推荐
- 对shell脚本里if语句的一点剖析
- shell脚本 if语句
- shell脚本if判断语句报错[: too many arguments的两种原因
- shell 脚本 if 语句
- shell脚本之-------------if 语句参数
- Shell脚本if else语句小结
- UNIX/Linux shell脚本 if语句的几个案例(适合Linux初学者)
- 2个简单shell脚本(if,while,case语句)
- shell脚本中的逻辑判断,文件目录属性判断,if特殊用法,case语句
- shell的一些常用的语句(if语句,变量,for、while、until语句、函数调用、脚本调用)
- shell脚本之while for if 语句和编写计划任务
- shell脚本:使用if-then语句和test命令
- shell脚本中在if语句中比较空串而出现的问题line 5: [: =: unary operator expected
- shell脚本练习一(if语句、case语句、for语句、while语句)
- 使用for、if语句添加用户的一个shell脚本
- linux之基础shell脚本编程2 if语句循环判断
- Shell脚本应用(if语句的结构)
- shell脚本编程之for语句、if语句使用介绍
- shell脚本基础应用(二)if单分支,双分支,多分支语句
- Linux-shell脚本-if语句/case语句