Bash提供了内置的空命令,也叫null命令,它是个冒号,运行时,它什么也不做,退出状态总是成功。null命令什么也不做,但在有些情况下,使用它是必要的。
脚本null_1.sh判断当前目录下是否有文件book.txt,如果没有,显示“文件不存在”,如果有,什么也不显示,关键字then后面使用了一个冒号,即null命令:
运行脚本null_1.sh,假设当前目录下没有文件book.txt,将显示“文件不存在”:
脚本null_1.sh中的null命令是必要的。如果将then后面的null命令变为空行:
再运行脚本,会遇到错误:
这是因为,如果脚本中then的后面是空行,关键字then和关键字else之间将没有任何命令,两个关键字“直接接触”了,所以出现语法错误。
在4.15节讲述expr命令时,讲过如何判断键盘输入的是整数,不是小数,也不是字母或字符串。脚本null_2.sh让键盘输入值存入变量int,再使用命令expr让int与整数10进行加法运算,如果命令expr的退出状态是非0,说明键盘输入的不是整数。
下面运行null_2.sh三次,分别输入整数、小数、字母:(www.xing528.com)
将脚本null_2.sh中的if后面取反,得到如下的null_3.sh,这两个脚本的功能完全一致:
null_2.sh使用了null命令,比null_3.sh“啰唆”,既然null_3.sh与null_2.sh作用相同,为什么不丢弃null_2.sh呢?实际上,写一个较长的脚本,通常不是马上可以完成的。有的地方暂时没有想好如何处理,或者相应的条件还未成熟,暂时没办法处理,可又希望脚本能尽快运行起来,这时就可以将null命令放置在暂时没有想好的地方。
null命令还有一个特点,不但自身的退出状态总是0,还可以带任何参数,并且退出状态总是0。下面的null命令后面带了5个随机输入的、凌乱的参数:
如果将这5个凌乱的参数直接作为命令执行,肯定是失败的:
null命令的这一特点是可以利用的。先复习4.16节的内容,根据该节的知识,在表达式${var:=180}中,var无值时,var将被赋值为180,有值的话将保持原来的值。
如果不将${var:=180}作为null命令的参数,直接运行${var:=180},会出错,因为${var:=180}是一个表达式,不是一个完整的命令。该表达式的值是180,所以,Linux系统会认为用户在执行命令180,这个命令是不存在的,运行出错:
将${var:=180}作为空命令的参数,即,在前面加一个冒号和空格,就不会出错了。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。