如何在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