我有一位同事正努力让exit 0
工作。
jshint ./ | grep "[0-9] errors" | { read x; if [ ${#x} -gt 0 ]; then exit 0; fi; }
如果我回显“test”而不是退出0,它会起作用(我看到回声),但是如果我尝试退出0,它就不能正常退出。
任何想法为什么?
答案 0 :(得分:3)
它无法正常退出。有什么想法吗?
你的陈述是一个管道。管道中的每个命令都在子shell中运行。这意味着exit 0
仅退出子shell。
答案 1 :(得分:1)
你可以这样改写你的行:
x=$(jshint ./ | grep "[0-9] errors" | { read x; echo "$x"; })
[ ${#x} -gt 0 ] && exit 0
避免在管道子shell中尝试exit
。
还要考虑这样做:
x=$(jshint ./ | grep "[0-9] errors" | head -1)
…