无法获得一个非常基本的bash脚本退出

时间:2014-01-29 00:06:18

标签: bash

我有一位同事正努力让exit 0工作。

jshint ./ | grep "[0-9] errors" | { read x; if [ ${#x} -gt 0 ]; then exit 0; fi; }

如果我回显“test”而不是退出0,它会起作用(我看到回声),但是如果我尝试退出0,它就不能正常退出。

任何想法为什么?

2 个答案:

答案 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)
…