だから私は以下を持っています:
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)