printf - 按格式重复参数

时间:2013-09-04 18:47:54

标签: bash shell scripting printf

我有一个字符串数组(可变大小......),如下所示:

arr=( "one str" "another str" "example" "last-string" )

我需要以下输出:

one str:one str another str:another str example:example last-string:last-string

问题在于,当我做类似的事情时:

$(printf " %s:%s" "${arr[@]}")

迭代数组,移动到字符串的下一个位置(不重复!),结果如下:

one str:another str  example:last-string

我如何用printf实现这个目标?没有任何循环!

如果有帮助,我在Cygwin中使用bash 3.1.0(1)!

1 个答案:

答案 0 :(得分:1)

使用bash的内置printf功能无法做到这一点。您需要使用循环或外部程序,例如的Python:

# With a loop:
for x in "${arr[@]}"; do
  printf " %s:%s" "$x" "$x"
done

# With Python
python -c 'import sys; print "".join(" %s:%s" % (arg, arg) for arg in sys.argv[1:])' "${arr[@]}"