这是我的bash脚本 – 我只是想要一个零的数字:
printf "%04d" "09" printf "%04d" "08" printf "%04d" "07" printf "%04d" "06"
输出:
./rename.sh: line 3: printf: 09: invalid number 0000 ./rename.sh: line 4: printf: 08: invalid number 0000 0007 0006
什么…?
只有09和08造成这个问题:我的序列中的其他数字似乎都可以。
如果你有一个变量中的“09”,你可以这样做
a="09" echo "$a" echo "${a#0}" printf "%04d" "${a#0}"
为什么这有帮助?那么,以0开头的数字字面值,但没有第二位的x被解释为八进制值。
八进制值只有数字0..7,8和9是未知的。
“$ {a#0}”中带有一个前导0.结果值可以输入到printf,然后打印出适当的0,前缀为4位数。
如果您必须期望获得诸如“009”的值,则会更复杂,因为您必须使用一个循环,消除开始时的所有多余的0,或者在注释中提到的extglob表达式。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。