我正在尝试在我的相机文件名的 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)
如您所见,每个文件名中间都有一个空格。
我尝试将每个名称用引号括起来,并用反斜杠转义空格,但这两种方法都不起作用。
当我尝试访问数组元素时,它继续将空格视为元素分隔符。
如何正确捕获名称中带有空格的文件名?
我认为问题可能部分与您访问元素的方式有关。如果我做一个简单的for elem in $FILES,我会遇到和你一样的问题。但是,如果我通过它的索引访问数组,就像这样,如果我以数字方式或使用转义添加元素,它就会起作用:
for elem in $FILES
for ((i = 0; i < ${#FILES[@]}; i++)) do echo "${FILES[$i]}" done
这些声明中的任何一个都$FILES应该起作用:
$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"