printf在unix上有一个变量

问题描述 投票:-1回答:1

我正在尝试在unix上使用带有变量的printf(输出应该是10.1毫秒),到目前为止我有:

var1=10.123 var2=mss printf "%.1f%4.2s\n" $var1 $var2

在bash终端的一个窗口,它返回我想要的文本行,但在其他窗口,它返回0.0,我真的不明白。

bash unix printf variable-assignment
1个回答
0
投票

您使用的语法:

var1=10.123 var2=mss printf "%.1f%4.2s\n" $var1 $var2

只是意味着:调用printf并将两个变量放入printf的环境中,并将调用shell中定义的$var1$var2的实际值作为printf的参数。原因是:不是printf评估$var1$var2,而是调用shell。

所以:如果你的shell的环境不包含var1var2,那么这个调用相当于

var1=10.123 var2=mss printf "%.1f%4.2s\n"

如果 - 另一方面 - shell已经知道这些变量:

var1=foo
var2=bar

那么这个电话相当于:

var1=10.123 var2=mss printf "%.1f%4.2s\n" foo bar

所以我假设你已经在这个“一个终端”中将这些变量设置为某个值。

可能的方法:

( var1=10.123; var2=mss; printf "%.1f%4.2s\n" $var1 $var2 )

但:

这些变量只对printf可见。因此,最简单的解决方案是完全省略它们:

printf "%.1f%4.2s\n" 10.123 mss
© www.soinside.com 2019 - 2024. All rights reserved.