次の2つの配列がありますbash
。
arr1=( 1 2 3 )
arr2=( 1 2 A )
を使って比較したいですdiff
。配列をファイルの内容としてどのように渡しますか?
いくつかのバリエーションを試しましたが、すべて失敗しました。
diff -y <$( echo ${arr1[@]} | tr ' ' '\n' ) <$( echo ${arr2[@]} | tr ' ' '\n' )
diff -y <${arr1[@]} <${arr2[@]}
diff -y $(<${arr2[@]}) $(<${arr1[@]})
diff -y <<<"$( echo ${arr1[@]} | tr ' ' '\n' )" \
<<<"$( echo ${arr2[@]} | tr ' ' '\n' )"
希望の出力は期待される出力になりますdiff -y
。配列をファイルaとbに保存すると、次の出力が得られます。
diff a b
1 1
2 2
3 | A
(読みやすいスペースを減らす)
速度上の理由で中間ファイルの作成を避けたい。しかし、tmpfs
疑似ファイルはRAMベースの解決策であることがわかっています。
答え1
使用printf
とプロセスの交換
diff -y <(printf '%s\n' "${arr1[@]}") <(printf '%s\n' "${arr2[@]}")
1 1
2 2
3 | A