我希望自动化我的xcode项目.除了带有空格的项目名称外,一切正常.我尝试了以下命令:
output_apps=`find ./ -name "*.app" -print`
output_apps=`find ./ -name "*.app"`
Run Code Online (Sandbox Code Playgroud)
我跑的时候
find ./ -name "*.app" -print
Run Code Online (Sandbox Code Playgroud)
没有存储到变量,它给我输出如下所述的预期:
.//Ten EU.app
.//Ten Official App EU.app
.//Ten Official App.app
.//Ten.app
Run Code Online (Sandbox Code Playgroud)
但是,当我将上述命令的输出存储在变量中时,如下所示
output_apps=`find ./ -name "*.app" -print`
Run Code Online (Sandbox Code Playgroud)
然后运行以下for循环以获取名称
for curr_app in $o
do
echo "$curr_app"
done
Run Code Online (Sandbox Code Playgroud)
表明
.//Ten
EU.app
.//Ten
Official
App
EU.app
.//Ten
Official
App.app
.//Ten.app
Run Code Online (Sandbox Code Playgroud)
如何维护每个输出之间的空格并获得以下输出?
Ten EU.app
Ten Official App EU.app
Ten Official App.app
Ten.app
Run Code Online (Sandbox Code Playgroud)
Ola*_*che 15
如果您不需要将文件名存储在变量中,则可以find -print0
与组合使用xargs -0
.这会将找到的条目与NUL字节而不是换行符分开.xargs
读取这些NUL分隔值并使用尽可能多的参数调用某些命令.
find ./ -name "*.app" -print0 | xargs -0 some-command
Run Code Online (Sandbox Code Playgroud)
如果你愿意,你可以限制给参数的个数some-command
与xargs -n 1
find ./ -name "*.app" -print0 | xargs -0 -n 1 some-command
Run Code Online (Sandbox Code Playgroud)
另一种方法是用while
循环读取文件
find ./ -name "*.app" -print | while read f; do
some-command "$f"
done
Run Code Online (Sandbox Code Playgroud)
这会一次调用一个文件.最重要的一点是要封闭$f
到双引号.