shell中if语句后面的[和]的左右空格
2011-03-26 16:49
197 查看
很多人都认为shell的语法过于死板,不好理解,很常见的一个例子就是if [ xxoo ]; then ooxx;fi这样的条件判断,如果“[”的左右或“]”的左边不加空格,shell就会出现语法问题.看上去这种语法分析跟很多语言的语法分析器不太一样,比如c/c++的if(xxoo){ooxx},小括号或者花括号两边的空格,你加,或者不加,编译器就在那里,不error不warning.那么,究竟是什么,让[左右的空格和]左边的空格不能省略呢?我们whereis [发现,[竟然是linux的一条命令
whereis [
[: /usr/bin/[
这就很好解释了,既然[是一条命令,为了消除语法的二义性,空格看来是不能省略的了.
关于[命令,基本和test是一直的设置系统的$?值,当[]中的值为true时#?被设置成0,否则为1;值得注意的是[ ];echo $?得到的结果是1;说明[在什么都不做的情况下的返回值是false.而[ null ];echo $?得到的是0.这种关系就和集合论里面的{}是空集,而{{}}显然不是空集是一样的道理.
更多阅读:
http://learn.akae.cn/media/ch31s05.html
http://www.cnblogs.com/roovent/archive/2010/12/11/1903503.html
whereis [
[: /usr/bin/[
这就很好解释了,既然[是一条命令,为了消除语法的二义性,空格看来是不能省略的了.
关于[命令,基本和test是一直的设置系统的$?值,当[]中的值为true时#?被设置成0,否则为1;值得注意的是[ ];echo $?得到的结果是1;说明[在什么都不做的情况下的返回值是false.而[ null ];echo $?得到的是0.这种关系就和集合论里面的{}是空集,而{{}}显然不是空集是一样的道理.
更多阅读:
http://learn.akae.cn/media/ch31s05.html
http://www.cnblogs.com/roovent/archive/2010/12/11/1903503.html
相关文章推荐
- 草泥马的Shell if 条件判断 如果 == 左右没有空格,不会报错并且按照True来执行。草泥马的
- 关于shell if控制语句和echo>>到xxx.sh的笔记
- linux-shell---if条件语句中:-a到-z的参数定义
- 2个简单shell脚本(if,while,case语句)
- shell脚本中的逻辑判断,文件目录属性判断,if特殊用法,case语句
- Linux系统Shell if语句用法小结
- Shell 脚本基础 - 使用 if 语句进行条件检测
- shell 中 if语句的语法错误
- shell if语句
- 书写优雅的shell脚本(一)- if语句
- shell脚本if和switch语句编写案例
- shell if语句格式详解
- shell脚本 if语句
- shell中if语句的格式以及使用
- shell单分支if语句
- shell 中的for、while循环及if语句
- [Shell] if、for、while流程语句以及整数字符串判断比较的实例详解
- Shell脚本应用(if语句的结构)
- Shell编程之IF条件语句各种案例演练
- shell 中 if语句的语法错误