以下材料摘自ABS3.7.2中文版,感谢原作者及译者
: 空命令,等价于"NOP"(no op,一个什么也不干的命令).也可以被认为与shell 的内建命令
(true)作用相同.":"命令是一
个bash 的内建命令,它的返回值为0,就是shell 返回的true.
如:
1 :
2 echo $? # 0
死循环,如:
1 while :
2 do
3 operation-1
4 operation-2
5 ...
6 operation-n
7 done
8
9 # 与下边相同:
10 # while true
11 # do
12 # ...
13 # done
在if/then 中的占位符,如:
1 if condition
2 then : # 什么都不做,引出分支.
3 else
4 take-some-action
5 fi
在一个2 元命令中提供一个占位符,具体见Example 8-2,和"默认参数".如:
1 : ${username=`whoami`}
2 # ${username=`whoami`} 如果没有":"的话,将给出一个错误,除非"username"是
3 # 个命令
在here document 中提供一个占位符,见Example 17-10.
使用"参数替换"来评估字符串变量(见Example 9-14).如:
1 : ${HOSTNAME?} ${USER?} ${MAIL?}
2 # 如果一个或多个必要的环境变量没被设置的话,
3 #+ 就打印错误信息.
"变量扩展/子串替换"
在和 > (重定向操作符)结合使用时,把一个文件截断到0 长度,没有修改它的权限.
如果文件在之前并不存在,那么就创建它.如:
1 : > data.xxx #文件"data.xxx"现在被清空了.
2
3 #与 cat /dev/null >data.xxx 的作用相同
4 #然而,这不会产生一个新的进程,因为":"是一个内建命令.
具体参见Example 12-14.
在和>>重定向操作符结合使用时,将不会对想要附加的文件产生任何影响.
如果文件不存在,将创建.
注意: 这只适用于正规文件,而不是管道,符号连接,和某些特殊文件.
也可能用来作为注释行,虽然我们不推荐这么做.使用#来注释的话,将关闭剩余行的
错误检查,所以可以在注释行中写任何东西.然而,使用:的话将不会这样.如:
1 : This is a comment thar generates an error,(if [ $x -eq 3] ).
":"还用来在/etc/passwd 和$PATH 变量中用来做分隔符.
bash$ echo $PATH
/usr/local/bin:/bin:/usr/X11R6/bin:/sbin:/usr/sbin:/usr/games
阅读(1450) | 评论(0) | 转发(0) |