gpt4 book ai didi

Bash 脚本 - 在变量中存储不带空格的查找命令输出

转载 作者:行者123 更新时间:2023-11-29 09:01:41 25 4
gpt4 key购买 nike

我希望自动化我的 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

限制给 some-command 的参数数量
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 中.

关于Bash 脚本 - 在变量中存储不带空格的查找命令输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14248039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com