Bash “这对”意味着什么;“如果命令”;要通过命令的退出状态?
参考处的指南,有一行是这样写的:“if COMMAND”构造返回COMMAND的退出状态Bash “这对”意味着什么;“如果命令”;要通过命令的退出状态?,bash,Bash,参考处的指南,有一行是这样写的:“if COMMAND”构造返回COMMAND的退出状态 我理解if结构是如何工作的,但不知何故我不明白这句话的意思。我认为《指南》对它的解释要清楚得多。ABS指南中是否有我遗漏的内容?这意味着: if false; then : else echo "Exit status is $?" fi false的退出状态被传递,因此显示退出状态的$?在作为后续行调用的echo中仍然可用 构造是否通过退出状态更直接重要的一种情况是变量赋值 比较以下两种情况:
我理解if结构是如何工作的,但不知何故我不明白这句话的意思。我认为《指南》对它的解释要清楚得多。ABS指南中是否有我遗漏的内容?这意味着:
if false; then
:
else
echo "Exit status is $?"
fi
false
的退出状态被传递,因此显示退出状态的$?
在作为后续行调用的echo
中仍然可用
构造是否通过退出状态更直接重要的一种情况是变量赋值 比较以下两种情况:
# passes through exit status
var=$(echo "hello"; false) # var=hello; $?=1
# masks exit status
declare var=$(echo "hello"; false) # var=hello; $?=0
declare
(如local
)不会通过分配期间执行的任何命令替换的退出状态;因此,它通过返回自己的退出状态(0,除非传递了无效的变量名或在自己的操作中有错误)来掩盖可能发生的任何故障
因此,如果要声明一个局部变量并从命令替换中赋值,而不放弃退出状态,最佳做法是使用两行:
somefunc() { # local only makes sense inside a function
local var # declare your local variables first...
var=$(echo "hello"; false) # ...then use them separately.
}
这意味着:
if false; then
:
else
echo "Exit status is $?"
fi
false
的退出状态被传递,因此显示退出状态的$?
在作为后续行调用的echo
中仍然可用
构造是否通过退出状态更直接重要的一种情况是变量赋值 比较以下两种情况:
# passes through exit status
var=$(echo "hello"; false) # var=hello; $?=1
# masks exit status
declare var=$(echo "hello"; false) # var=hello; $?=0
declare
(如local
)不会通过分配期间执行的任何命令替换的退出状态;因此,它通过返回自己的退出状态(0,除非传递了无效的变量名或在自己的操作中有错误)来掩盖可能发生的任何故障
因此,如果要声明一个局部变量并从命令替换中赋值,而不放弃退出状态,最佳做法是使用两行:
somefunc() { # local only makes sense inside a function
local var # declare your local variables first...
var=$(echo "hello"; false) # ...then use them separately.
}
仅供参考,ABS是一个非常非常差的参考。不使用它是明智的。bash黑客维基或wooledge维基都要好得多……wooledge维基上相应的页面是;bash黑客wiki上的相应页面是我看到的。谢谢你的推荐!仅供参考,ABS是一个非常非常差的参考。不使用它是明智的。bash黑客维基或wooledge维基都要好得多……wooledge维基上相应的页面是;bash黑客wiki上的相应页面是我看到的。谢谢你的推荐!