用printf显示数组的内容(不是echo)

时间:2013-11-27 14:58:18

标签: bash printf

#!/usr/bin/env bash

$ a=("1st" "2nd")
$ echo "${a[*]}"
> 1st 2nd
$ echo "${a[@]}"
> 1st 2nd
$ printf "${a[*]}\n"
> 1st 2nd
$ printf "${a[@]}\n"
> 1st

为什么最后printf命令失败?

1 个答案:

答案 0 :(得分:4)

您应该向printf command提供格式:

printf "%s\n" "${a[@]}"

当您printf使用printf "${a[@]}\n"时,它等同于:

printf "1st" "2nd\n"

由于第一个参数中没有可识别的格式,因此只打印文字1st