我没有得到 ($(cat)) 和 ${arr[@]} 之间的区别

I am not getting difference between ($(cat)) and ${arr[@]}

我正在学习 bash 脚本。当我在解决问题时,我发现 ($(cat))${arr[@]} 有一些不同。谁能解释一下有什么区别?

#!/bin/bash

read
arr=($(cat))

# read line
# arr=( $line )

arr=${arr[@]}
echo $((${arr// /^}))

我正在处理的脚本。另外,为什么评论部分也可以作为 arr=($(cat))?或者也有区别??如果可能的话,再举一个例子,这样我的概念就会清楚。 请指导... 谢谢

arr=($(cat))

填充一个数组,而

arr=${arr[@]}

填充标量变量。

printf '%s %s\n'  a b c d > file
arr=($(cat file))
scalar=${arr[@]}

echo "${arr[1]}"  # b
echo "$scalar"    # a b c d