如何在单独的行上打印 Bash 数组的数组元素?这个可行,但肯定有更好的方法:
$ my_array=(one two three) $ for i in ${my_array[@]}; do echo $i; done one two three
试过这个,但没有奏效:
$ IFS=$'\n' echo ${my_array[*]} one two three
尝试这样做:
$ printf '%s\n' "${my_array[@]}"
$@和的区别$*:
$@
$*
未引用,结果未指定。在 Bash 中,两者都扩展为单独的 args,然后是 wordsplit 和 globbed。
引用,"$@"将每个元素扩展为一个单独的参数,同时"$*" 扩展为合并到一个参数中的 args:("$1c$2c..."其中c第一个字符是IFS)。
"$@"
"$*"
"$1c$2c..."
c
IFS
你几乎总是想要"$@". 也一样"${arr[@]}"。
"${arr[@]}"
总是引用他们!