如何检查BASH脚本的json文件中是否存在[“ foo”] [“ bar”]?在下面尝试过:
$ cat myJson.json | if ( python3 -c "import sys,json; json.load(sys.stdin)['foo']['bar']"); then echo "found foo-bar"; fi
$ found foo-bar
它可以工作,但是如果该元素不存在,它将在下面打印:
Traceback (most recent call last):
File "<string>", line 1, in <module>
KeyError: 'baz'
但是bash脚本不会失败。
更新:
尝试过以下尝试:
cat myJson.json | \
if (
python3 -c "
import sys,json
try:
json.load(sys.stdin)['foo']['bar']
except KeyError:
#exit with non-0.
sys.exit(1)
") then echo "found foo_bar"; FOUND_FOO_BAR=true;
fi
echo $FOUND_FOO_BAR
$ found foo_bar
$
$
我希望在“找到foo_bar”之后打印“ true”,但是没有,我在做什么错了?