True和false (命令)
在类Unix操作系统中,true和false的唯一功能就是始终返回设定的退出状态。程序员和脚本通常使用退出状态评估命令执行的成功(0状态)与否(不为零)。true和false命令可以代表命令成功的逻辑值,因为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命令有时可以用非常相似的空命令代替,[1]写法为一个单冒号(:
)。空命令是壳层内建指令,因此,当true是外部程序时,它可能会更有效(true通常是壳层内建指令)。我们可以用:
代替true
重写上面的例子:
while : do echo hello done
空命令可以有参数,但会被忽略。也可以用它作一个无操作的伪命令,一种参数的扩展形式${parameter:=word}
使用了它的副作用,来为参数分配默认值。[2]如一个来自bashbug,Bash bug报告脚本的例子:
: ${TMPDIR:=/tmp} : ${EDITOR=$DEFEDITOR} : ${USER=${LOGNAME-`whoami`}}
参见
- Unix实用程序列表
- 二值原理
- IEFBR14
参考
外部链接
true
: return true value – 命令与工具(Commands & Utilities)参考,单一UNIX®规范第7期,由國際開放標準組織发布false
: return false value – 命令与工具(Commands & Utilities)参考,单一UNIX®规范第7期,由國際開放標準組織发布
手册页
- true(1)(页面存档备份,存于互联网档案馆): Do nothing, successfully – GNU Coreutils参考
- false(1)(页面存档备份,存于互联网档案馆): Do nothing, unsuccessfully – GNU Coreutils参考
- true(1): Return true value – FreeBSD手册页
- false(1): Return false value – FreeBSD手册页
- 查
- 论
- 编
- awk
- banner(英语:banner (Unix))
- basename
- comm(英语:comm)
- csplit(英语:csplit)
- cut
- diff
- dirname
- ed
- ex
- fmt(英语:fmt)
- fold(英语:fold (Unix))
- head(英语:head (Unix))
- iconv
- join(英语:join (Unix))
- less
- more
- nl(英语:nl (Unix))
- paste(英语:paste (Unix))
- sed
- sort(英语:sort (Unix))
- spell(英语:spell (Unix))
- strings(英语:strings (Unix))
- tail
- tr
- uniq(英语:uniq)
- vi
- wc
- xargs
- alias
- echo
- printf格式字符串
- test(英语:test (Unix))
- unset
- wait
- apropos(英语:apropos (Unix))
- help(英语:help (command))
- man