对于"如果命令"它æ„味ç€ä»€ä¹ˆï¼Ÿé€šè¿‡COMMAND的退出状æ€ï¼Ÿ

时间:2015-11-30 15:40:33

标签: bash

å‚考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指å—中是å¦ç¼ºå°‘æŸäº›å†…容?

1 个答案:

答案 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.
}
相关问题