2つのファイル名の配列が同じであることを確認してください。

2つのファイル名の配列が同じであることを確認してください。

だから私は以下を持っています:

cat file | grep -E regex  

行のリストを提供します。
これでファイルリストを生成するforループもあります。
配列が2つあるのと同じです。
しかし、2つの配列の内容が同じ場合、bashでどのように確認できますか?私のbashバージョンは連想配列(4.2)をサポートしていません。
bash以外に他の方法を見つける必要がありますか?それともbashを使って簡単に入手できますか?

修正する
ルートを確認してfor i in foo/bar/*記録し、基本的に場所を確保します。

foo/bar/a/b  
foo/bar/c/d   
foo/bar/e etc  

だから私は基本的にforループを再実行し、まったく同じ結果が得られたことを確認したいと思います。

ベストアンサー1

配列名が「array1」と「array2」であると仮定し、bashコードを使用して同じであることを確認します。

equal=true
if [[ ${#array1[@]} -ne ${#array2[@]} ]]; then
    equal=false
else
    while IFS= read -r elem1 <&3; IFS= read -r elem2 <&4; do
        if [[ "$elem1" != "$elem2" ]]; then
            equal=false
            break
        fi
    done 3< <(printf "%s\n" "${array1[@]}" | sort) \
         4< <(printf "%s\n" "${array2[@]}" | sort)
fi
if $equal; then
    echo arrays have the same contents
else
    echo arrays have different contents
fi

これは外部ツールを呼び出すよりも遅くなります(おそらく「はるかに遅い」でしょう)。

diff <(grep -E regex file1) <(grep -E regex file2)

おすすめ記事