无法使用formatter和argument变量执行printf命令

时间:2015-09-21 15:56:47

标签: bash

我试图将所有printf格式化程序和参数存储到各自的变量中,以便稍后执行。示例代码:

var="abc123"
var2="def 456"
printfArgument=$var" "$var2

formatter="%-10s"
formatter2="%-10s"
printfFormatter=$formatter" "$formatter2"\n"

printf "$printfFormatter" $printfArgument

输出:

abc123     def       
456     

似乎var2中的空格导致456显示不正确。有什么办法解决吗?

1 个答案:

答案 0 :(得分:2)

你是对的; var2中的空格用于分词。 printf在格式字符串后面接收3个参数:abc123def456。前两个填充第一行输出的两个格式说明符。由于存在剩余参数,因此再次使用格式字符串来生成第二行输出。

您需要为printfArgument使用数组:

printfArgument=( "$var" "$var2" )
printf "$printfFormatter" "${printfArgument[@]}"

或单独使用varvar2

printf "$printfFormatter" "$var" "$var2"