我正在尝试在unix上使用带有变量的printf(输出应该是10.1毫秒),到目前为止我有:
var1=10.123 var2=mss printf "%.1f%4.2s\n" $var1 $var2
在bash终端的一个窗口,它返回我想要的文本行,但在其他窗口,它返回0.0,我真的不明白。
您使用的语法:
var1=10.123 var2=mss printf "%.1f%4.2s\n" $var1 $var2
只是意味着:调用printf
并将两个变量放入printf
的环境中,并将调用shell中定义的$var1
和$var2
的实际值作为printf
的参数。原因是:不是printf
评估$var1
和$var2
,而是调用shell。
所以:如果你的shell的环境不包含var1
和var2
,那么这个调用相当于
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