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。

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

丹·费戈

我认为问题可能部分在于您如何访问元素。如果我做简单的话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"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章