[英]bash store output of command in array
我正在嘗試查找以下命令的輸出是否僅在數組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根本不是一個數組。 我如何強制它將元素存儲在數組中?
您缺少定義數組的括號。 但是根本的問題是,反引號內部的運行find
會在空格上分割,因此,如果任何匹配的文件可以包含一個空格,它將在結果數組中產生多個元素。
無論如何使用-maxdepth 1
,只需使用shell的globbing設施即可; 您根本不需要find
。
array_a=(/path/dir1/file_orders?.csv)
使用數組時也要注意引號。
echo "${array_a[@]}"
沒有引號,空格將再次發生。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.