bash存储数组中命令的输出

时间:2018-01-25 05:29:46

标签: arrays bash counting

我试图查找以下命令的输出是否只存储数组array_a中的一个文件

array_a = $(find /path/dir1 -maxdepth 1 -name file_orders?.csv)
echo $array_a
/path/dir1/file_orders1.csv /path/dir1/file_orders2.csv
echo ${#array_a[@]}
1

所以它告诉我,我只有一个元素,但显然有2个元素。 如果我输入echo $ {array_a [0]},它就不会给我任何回报。就像,变量array_a根本就不是一个数组。我如何强制它将元素存储在数组中?

1 个答案:

答案 0 :(得分:3)

您缺少定义数组的括号。但基本问题是在反引号内运行find会在空格上分割,所以如果任何匹配的文件可以包含空格,它将在结果数组中产生多个元素。

无论如何,只需使用shell的通配设施;你根本不需要-maxdepth 1

find

使用数组时也要注意引号。

 array_a=(/path/dir1/file_orders?.csv)

如果没有引号,空格分割将再次发生