在 bash 中创建数组时,任何人都可以发现我出错的地方吗?



我正在创建一个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[@]}"

当前代码屏幕截图

感谢@jordanm发现我的错误。

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

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

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

相关内容

最新更新