Fel*_*xJN 4 bash diff io-redirection array
我有两个bash
数组,说:
arr1=( 1 2 3 )
arr2=( 1 2 A )
Run Code Online (Sandbox Code Playgroud)
我想使用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' )"
Run Code Online (Sandbox Code Playgroud)
所需的输出将是预期的diff -y
,如果我将数组存储到文件 a 和 b 中,我会得到:
diff a b
1 1
2 2
3 | A
Run Code Online (Sandbox Code Playgroud)
(减少可读性的空间)
出于速度原因,我想避免编写中间文件,尽管我知道tmpfs
伪文件是基于 RAM 的解决方法。
使用printf
和过程替换
diff -y <(printf '%s\n' "${arr1[@]}") <(printf '%s\n' "${arr2[@]}")
1 1
2 2
3 | A
Run Code Online (Sandbox Code Playgroud)