簡體   English   中英

bash將命令的輸出存儲在數組中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM