谁能发现我在bash中创建数组时出错的地方吗?

发布于 2025-01-18 10:57:49 字数 635 浏览 1 评论 0原文

我正在创建一个 shell 脚本来查找和删除保存在桌面上的屏幕截图。 我正在尝试使用 mapfile 创建文件路径数组。

然而,我正在努力管理它,因为我当前的代码创建了一个只有一个元素的数组!

值得一提的是,注释掉的代码成功创建了我想要的数组(如果我假装没有发生分词)。我知道这并不理想,因为它将输出分割成单独的数组元素,但至少它创建了一个包含多个元素的数组!

任何人都可以指出我正确的方向,因为我一直在查找如何使用 mapfile 的示例,但尚未成功:(

代码:

declare -a files

mapfile -d '' files < <(find "$HOME/Desktop" -maxdepth 1 -type f -name "*.png")

# files=($(find "$HOME/Desktop" -maxdepth 1 -type f -name *.png))

echo "${#files[@]}"

当前代码截图

I'm creating a shell script to find and delete screenshots saved on my desktop.
I'm trying to use mapfile to create an array of file paths.

However I'm struggling to manage it as my current code creates an array that has only a single element!

Worth mentioning that the commented out code succeeds in creating the array I want (if I pretend the word splitting isn't happening). I know that it isn't ideal as it's splitting the output into separate array elements but at least it's creating an array with more than one element!

Can anyone point me in the right direction because I've been looking up example of how to use mapfile and no success yet :(

Code:

declare -a files

mapfile -d '' files < <(find "$HOME/Desktop" -maxdepth 1 -type f -name "*.png")

# files=($(find "$HOME/Desktop" -maxdepth 1 -type f -name *.png))

echo "${#files[@]}"

Screenshot of current code

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

脸赞 2025-01-25 10:57:49

感谢@jordanm 发现我的错误。

我需要添加 -print0 操作来打印完整文件名,后跟一个空字符,因为它默认为 print

这是修正后的版本,没有不必要的declare

mapfile -d '' files < <(find "$HOME/Desktop" -maxdepth 1 -type f -name "*.png" -print0)

Thanks to @jordanm for spotting my mistake.

I needed to add the -print0 action to print the full file name followed by a null character as it was defaulting to print.

This is the corrected version without the unnecessary declare:

mapfile -d '' files < <(find "$HOME/Desktop" -maxdepth 1 -type f -name "*.png" -print0)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文