True和false (命令)

在类Unix操作系统中,truefalse的唯一功能就是始终返回设定的退出状态。程序员和脚本通常使用退出状态评估命令执行的成功(0状态)与否(不为零)。truefalse命令可以代表命令成功的逻辑值,因为true返回1,false返回0。

用法
命令通常在shell脚本中的条件语句和循环语句使用。例如,下面的shell脚本重复echo hello循环,直至被中断:

while true
do
echo hello
done

命令可用来忽略其他命令序列的成败状态,如在本例中:
make … && false
在/etc/passwd中将用户的登录shell设置为false,事实上阻止了他们访问交互式shell,但他们帐户的其他服务可能仍然有效,如FTP。(尽管如此,如果可用的话,/sbin/nologin可能更适合这个目的,因为它在终止会话之前会显示一个通知。)

程序并没有“实际的”参数;在大多数Linux版本中,标准参数--help可以显示用法摘要,--version则显示程序版本。

空命令
true命令有时可以用非常相似的空命令代替,写法为一个单冒号(:)。空命令是壳层内建指令,因此,当true是外部程序时,它可能会更有效(true通常是壳层内建指令)。我们可以用:代替true重写上面的例子:

while :
do
echo hello
done

空命令可以有参数,但会被忽略。也可以用它作一个无操作的伪命令,一种参数的扩展形式${parameter:=word}使用了它的副作用,来为参数分配默认值。如一个来自bashbug,Bash bug报告脚本的例子:

: ${TMPDIR:=/tmp}
: ${EDITOR=$DEFEDITOR}
: ${USER=${LOGNAME-whoami}}

参见
*Unix实用程序列表
*二值原理
*IEFBR14

参考
外部链接
*
*

手册页
*[http://www.gnu.org/software/coreutils/manual/html_node/true-invocation.html true(1)]: Do nothing, successfully – GNU Coreutils参考
*[http://www.gnu.org/software/coreutils/manual/html_node/false-invocation.html false(1)]: Do nothing, unsuccessfully – GNU Coreutils参考
*[https://man.freebsd.org/true true(1)]: Return true value – FreeBSD手册页
*[https://man.freebsd.org/false false(1)]: Return false value – FreeBSD手册页

评论 (0)

  • 还没有评论,来抢沙发吧。