Bash脚本 – 在变量中存储没有空格的find命令输出
发布时间:2020-12-15 22:24:22 所属栏目:安全 来源:网络整理
导读:我希望自动化我的 xcode项目.除了带有空格的项目名称外,一切正常.我尝试了以下命令: output_apps=`find ./ -name "*.app" -print`output_apps=`find ./ -name "*.app"` 我跑的时候 find ./ -name "*.app" -print 没有存储到变量,它给我输出如下所述的预期:
我希望自动化我的
xcode项目.除了带有空格的项目名称外,一切正常.我尝试了以下命令:
output_apps=`find ./ -name "*.app" -print` output_apps=`find ./ -name "*.app"` 我跑的时候 find ./ -name "*.app" -print 没有存储到变量,它给我输出如下所述的预期: .//Ten EU.app .//Ten Official App EU.app .//Ten Official App.app .//Ten.app 但是,当我将上述命令的输出存储在变量中时,如下所示 output_apps=`find ./ -name "*.app" -print` 然后运行以下for循环以获取名称 for curr_app in $o do echo "$curr_app" done 表明 .//Ten EU.app .//Ten Official App EU.app .//Ten Official App.app .//Ten.app 如何维护每个输出之间的空格并获得以下输出? Ten EU.app Ten Official App EU.app Ten Official App.app Ten.app 解决方法
如果您不需要将文件名存储在变量中,则可以将
find -print0 与
xargs -0 结合使用.这会将找到的条目与NUL字节而不是换行符分开. xargs读取这些NUL分隔值,并使用尽可能多的参数调用一些命令.
find ./ -name "*.app" -print0 | xargs -0 some-command 如果需要,可以使用xargs -n 1限制给某个命令的参数个数 find ./ -name "*.app" -print0 | xargs -0 -n 1 some-command 另一种方法是使用while循环读取文件 find ./ -name "*.app" -print | while read f; do some-command "$f" done 这会一次调用一个文件.重要的是将$f括在double quotes中. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |