如何在bash中打印数组中的字符串?

如何在bash中打印数组中的字符串?,bash,Bash,给定以下数组: arr=("hello hello" "bye bye") 如何将arr中的任何元素打印到标准输出 我试着用下一种方法: for line in ${arr[*]}; do echo ${line} done 但在此状态下,输出为: 你好 你好 再见 再见 我想得到: 你好你好 再见,你刚认识 如果你报价(就像你应该报价的那样),一切都可以: $ for line in "${arr[@]}"; do echo "$line"; done 可以是(): 输出: “

给定以下数组:

arr=("hello hello" "bye bye")
如何将
arr
中的任何元素打印到标准输出

我试着用下一种方法:

for line in ${arr[*]}; do
    echo ${line}
done
但在此状态下,输出为:
你好
你好
再见
再见

我想得到:
你好你好
再见,你刚认识


如果你报价(就像你应该报价的那样),一切都可以:

$ for line in "${arr[@]}"; do echo "$line"; done
可以是():

输出: “双引号”包含空格/元字符的每个文本和每个扩展:
“$var”
“$(命令“$var”)”
“${array[@]}”
“a&b”
。对代码或文字
$使用
'single quotes'
ssh主机'echo“$HOSTNAME”
。见




$@
$*
之间的差异:
“$@”
(引号)扩展到每个位置参数,作为其自身的参数:
“$1”
“$2”
。。。而
“$*”
扩展到单个参数
“$1c$2c…”
,其中
c
IFS
的第一个字符。不带引号的
$*
$@
未定义的
不要使用。您几乎总是想要
“$@”
数组也一样
“${array[@]}”

我想应该是这样的:

arr=("hello hello" "bye bye")
for line in "${arr[@]}" ; do
    echo $line
done

bash正在尽力进行解释。

你能解释一下为什么使用
${arr[@]}
它不起作用吗?那么
arr[@]
arr[*]
之间有什么区别呢?查看我编辑的文章(最后一段)。非常感谢。你好,你能帮我吗?你能解释一下为什么使用
${arr[@]}
它不起作用吗?而
arr[@]
arr[*]
之间的区别是什么?@anubhava,这不是重复的,OP需要打印元素,而不是在阵列上循环P显示了试图在阵列中循环并打印的代码。
hello hello
bye bye
arr=("hello hello" "bye bye")
for line in "${arr[@]}" ; do
    echo $line
done