2016-07-02 16 views
2

私はgrepの出力行を要素として配列に配置しようとしています。grepの出力行を配列

arr_name[0] = test.mp4 
arr_name[1] = test2.mp4 

ここに私のコードは、これまでのところです:

出力をgrepをした後、だからここ

test.mp4 
test2.mp4 

はそれが最後であるべき方法です(ファイルは中/例えばASDフォルダ保存されます)

arr_name=($(cd ~/asd; ls -tr | grep -v total | head -2)) 

間違いを解決するのに手伝ってもらえますか?

+0

いいですね。それが動作しているかどうかをテストするにはどうしますか?エコー$ {arr_name [0]}など...は動作するはずです。 – borrible

+0

スクリプトを実行すると、構文エラーとなります: "(配列が – MNedelchev

+0

の[mcve]を含むように質問した行のために予期せぬ予期していた... –

答えて

4

ここではgrepは不要で、lsという出力の解析は-Iオプションを使用してlsにしないでください。

# To list all files except *total* 
ls -I '*total*' -tr 

# to read all the listed entries in an array 
mapfile -t arr < <(ls -I '*total*' -tr) 

# to get first 2 entries 
echo "${arr[@]:0:2}" 

# to store 2 entries in an array 
parr=("${arr[@]:0:2}") 

# check your results 
declare -p parr 
+1

Nice。' 'mapfile -t arr < (ls -I '* total *' -tr) 'ここで動作しますか? – sjsam

+0

' ls'コマンドの出力で 'mapfile'を使用して配列を生成しました。コマンド置換はAnnemarieとしても動作しますが、ファイル名に空白。 – anubhava