开发者社区> 问答> 正文

Bash数组,元素中有空格

我正在尝试从相机的文件名的bash中构造一个数组:

FILES=(2011-09-04 21.43.02.jpg 2011-09-05 10.23.14.jpg 2011-09-09 12.31.16.jpg 2011-09-11 08.43.12.jpg) 如您所见,每个文件名中间都有一个空格。

我试过将每个名称都用引号引起来,并用反斜杠转义空格,但这两个都不起作用。

当我尝试访问数组元素时,它将继续将空间视为elementdelimiter。

如何正确捕获名称中带有空格的文件名?

问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-07 00:58:25 512 0
1 条回答
写回答
取消 提交回答
  • 我认为问题可能与您访问元素的方式有关。如果我做的简单for elem in $FILES,我会遇到与您相同的问题。但是,如果像这样通过数组的索引访问数组,则无论我以数字形式还是使用转义符添加元素,它都可以工作:

    for ((i = 0; i < ${#FILES[@]}; i++)) do echo "${FILES[$i]}" done 这些声明中的任何一个都$FILES应该起作用:

    FILES=(2011-09-04\ 21.43.02.jpg 2011-09-05\ 10.23.14.jpg 2011-09-09\ 12.31.16.jpg 2011-09-11\ 08.43.12.jpg) 要么

    FILES=("2011-09-04 21.43.02.jpg" "2011-09-05 10.23.14.jpg" "2011-09-09 12.31.16.jpg" "2011-09-11 08.43.12.jpg") 要么

    FILES[0]="2011-09-04 21.43.02.jpg" FILES[1]="2011-09-05 10.23.14.jpg" FILES[2]="2011-09-09 12.31.16.jpg" FILES[3]="2011-09-11 08.43.12.jpg"

    2020-02-07 00:58:39
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载