我试图将所有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显示不正确。有什么办法解决吗?
答案 0 :(得分:2)
你是对的; var2
中的空格用于分词。 printf
在格式字符串后面接收3个参数:abc123
,def
和456
。前两个填充第一行输出的两个格式说明符。由于存在剩余参数,因此再次使用格式字符串来生成第二行输出。
您需要为printfArgument
使用数组:
printfArgument=( "$var" "$var2" )
printf "$printfFormatter" "${printfArgument[@]}"
或单独使用var
和var2
:
printf "$printfFormatter" "$var" "$var2"