å‚考http://tldp.org/LDP/abs/html/testconstructs.html的指å—,有一å¥è¯è¯´ï¼šï¼†ï¼ƒ34; if COMMAND" construct返回COMMAND的退出状æ€ã€‚
我ç†è§£ifæž„é€ æ˜¯å¦‚ä½•å·¥ä½œçš„ï¼Œä½†ä¸çŸ¥ä½•æ•…ä¸æ˜Žç™½è¿™å¥è¯æ˜¯ä»€ä¹ˆæ„æ€ã€‚我认为http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html的指å—更清楚地解释了它。 ABS指å—ä¸æ˜¯å¦ç¼ºå°‘æŸäº›å†…容?
ç”案 0 :(得分:3)
è¿™æ„味ç€ä»€ä¹ˆï¼š
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,除éžä¼ é€’äº†æ— æ•ˆçš„å˜é‡å称或在其自己的æ“作ä¸æœ‰é”™è¯¯ï¼‰æ¥å±è”½å¯èƒ½å‘生的任何故障。
å› æ¤ï¼Œå¦‚æžœè¦å£°æ˜Žä¸€ä¸ªå˜é‡local并从命令替æ¢ä¸åˆ†é…一个值而ä¸ä¸¢å¼ƒé€€å‡ºçŠ¶æ€ï¼Œæœ€ä½³åšæ³•æ˜¯ä½¿ç”¨ä¸¤ä¸ªå•ç‹¬çš„行:
somefunc() { # local only makes sense inside a function
local var # declare your local variables first...
var=$(echo "hello"; false) # ...then use them separately.
}