将前导零添加到用户的输入中,但正在使用printf进行转换

麦可

我目前正在寻找以下代码的替代方法,该方法的工作量要比“ wonky”少一些。

printf "Please enter the ticket number:\t"; read vTICKET; vTICKET=$(printf %04d "$vTICKET"); printf "$vTICKET\n";

如果我输入072作为输入,这就是我所看到的

Please enter the ticket number: 072
0058

我想知道是否还有另一种方法可以让我更宽容输入或read命令?printf似乎是在不实际测试字符串长度的情况下添加前导零的一种很酷的方法。

钢铁司机

输入值的前导零使外壳程序将其解释为八进制数。

您可以使用10#例如强制十进制转换

$ printf "Please enter the ticket number:\t"; read vTICKET; vTICKET=$(printf %04d "$((10#$vTICKET))" ); printf "$vTICKET\n";
Please enter the ticket number: 072
0072

需要注意的是在bash,你可以分配的结果printf直接用一个变量-vprintf -v vTICKET %04d "$((10#$vTICKET))"

另请参阅如何阻止Bash解释八进制代码而不是整数?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章