Dawson Smith Asked: 2022-01-11 01:47:19 +0800 CST2022-01-11 01:47:19 +0800 CST 2022-01-11 01:47:19 +0800 CST 语句的含义-test -x /usr/bin/find || 出口 0 772 我只是想了解以下陈述的含义以及它们是否正确。 test -x /usr/bin/find || exit 0 Command 1 Command 2 Command 3 的输出test -x /usr/bin/find始终为 0。这意味着将执行 exit 0 命令,这意味着永远不会执行命令 1、2、3。我在这里吗? shell test 2 个回答 Voted Best Answer they 2022-01-11T01:56:06+08:002022-01-11T01:56:06+08:00 test -x /usr/bin/find(或[ -x /usr/bin/find ])不输出任何东西。如果是一个现有的可执行文件,则测试为真,如果路径名不存在或它不可执行,则为假。/usr/bin/find 如果test成功退出(退出状态为零,表示“无错误”),shell 将执行其余命令。如果它以失败退出(非零退出状态,表示“某些错误”),exit 0将终止当前 shell,阻止其余命令运行。 可以说,使用exit 1或exit代替exit 0何时find找不到会更好/usr/bin。使用掩码(非零)exit 0的退出状态,并防止此脚本的调用者收到在给定位置查找失败的通知。testfind 与在 shell 中作为布尔值测试时退出状态为零的事实评估为“真”相关: 为什么 Unix 命令在 Shell 中以非零值退出并在 bash if 条件下使用时评估为 True? 与使用||和&&一般情况相关: shell 的控制和重定向操作符是什么? Arkadiusz Drabczyk 2022-01-11T01:56:43+08:002022-01-11T01:56:43+08:00 不,他们将永远被处决。其中man bash说(它在每个 POSIX shell 中都是这样工作的): An OR list has the form command1 || command2 command2 is executed if, and only if, command1 returns a non-zero exit status. 由于test -x /usr/bin/find返回 0 command2 (exit 0在这种情况下)没有执行,脚本继续执行。
test -x /usr/bin/find
(或[ -x /usr/bin/find ]
)不输出任何东西。如果是一个现有的可执行文件,则测试为真,如果路径名不存在或它不可执行,则为假。/usr/bin/find
如果
test
成功退出(退出状态为零,表示“无错误”),shell 将执行其余命令。如果它以失败退出(非零退出状态,表示“某些错误”),exit 0
将终止当前 shell,阻止其余命令运行。可以说,使用
exit 1
或exit
代替exit 0
何时find
找不到会更好/usr/bin
。使用掩码(非零)exit 0
的退出状态,并防止此脚本的调用者收到在给定位置查找失败的通知。test
find
与在 shell 中作为布尔值测试时退出状态为零的事实评估为“真”相关:
与使用
||
和&&
一般情况相关:不,他们将永远被处决。其中
man bash
说(它在每个 POSIX shell 中都是这样工作的):由于
test -x /usr/bin/find
返回 0 command2 (exit 0
在这种情况下)没有执行,脚本继续执行。