find -exec覆盖退出状态

时间:2014-06-02 20:03:45

标签: xcode bash

我正在尝试在XCode中设置一个自定义脚本构建阶段,这将允许我验证项目中的所有json。

我的脚本是:

source ~/.bashrc
eval "cd '$PROJECT_DIR'"
find . -name \*.json -exec jsonlint -q {} \;

问题是,如果出现故障,它将进入下一个文件并最终以状态0退出...我正在寻找一种方法使-exec在遇到非零状态时停止。 / p>

我以为我可以通过手动循环文件来处理这个问题:

for f in $(find . -name *.json); do ... done;

然而,这些json文件的路径包含空格,所以当我尝试这样做时,$ f甚至“$ f”显示为“/ Users / me / path”,“with”,“space /123.json“,而不是实际的路径”/ Users / me / path with spaces / 123.json“

我在网上看到的所有内容都说“当你加倍引用f时,它会自动处理逃避的空间!” - 在这种情况下不正确!

1 个答案:

答案 0 :(得分:0)

您可以使用while循环:

find . -name '*.json' -print0 | while IFS= read -r -d '' file
do
    jsonlint -q "$file" || echo "Oh oh! " 1>&2
done