我试图查找以下命令的输出是否只存储数组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根本就不是一个数组。我如何强制它将元素存储在数组中?
答案 0 :(得分:3)
您缺少定义数组的括号。但基本问题是在反引号内运行find
会在空格上分割,所以如果任何匹配的文件可以包含空格,它将在结果数组中产生多个元素。
无论如何,只需使用shell的通配设施;你根本不需要-maxdepth 1
。
find
使用数组时也要注意引号。
array_a=(/path/dir1/file_orders?.csv)
如果没有引号,空格分割将再次发生 。