加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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 -print0xargs -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中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读