谁能发现我在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[@]}"
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[@]}"
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
感谢@jordanm 发现我的错误。
我需要添加
-print0
操作来打印完整文件名,后跟一个空字符,因为它默认为print
。这是修正后的版本,没有不必要的
declare
: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 toprint
.This is the corrected version without the unnecessary
declare
: