BASH printf数组,带有字段分隔符和最后一个条目的换行符

Ger*_*son 7 bash printf

如何在BASH中打印出一个数组,并在每个值和最后一个换行符之间使用字段分隔符.

我用单个printf得到的最接近的是printf '%s|' "${arr1[@]}"| 是字段分隔符.这个问题是最后没有换行符.\n我尝试放入其中的任何组合要么在每个条目上都有一个换行符,要么根本没有!

有没有办法在一条线上做或我需要使用 printf '%s|' "${arr1[@]}";printf "\n"

谢谢,

杰兰特

Cha*_*ffy 10

是的,你需要两个命令.printf '%s|' "${array[@]}"; echo完全是传统的.

或者,如果您不想进行尾随|,则可以临时修改IFS以使用所选分隔符作为其第一个字符,并使用"${array[*]}":

IFS="|$IFS"; printf '%s\n' "${array[*]}"; IFS="${IFS:1}"
Run Code Online (Sandbox Code Playgroud)

  • 或者只是`(IFS ="| $ IFS"; printf'%s \n'"$ {array [*]}")`,使用子shell将更改本地化为`IFS`. (4认同)