[英]How to resolve arithmetic syntax error in printf
我正在SunOS
以下代码作为.sh
文件运行
#!/usr/bin/bash
#lerning linux scripting
#
printf "%-5s %-10s %-4s\n" No Name Mark
printf "%-5s %-10s %-4.2f\n" 1 James 80.1234
printf "%-5s %-10s %-4.2f\n" 2 Sarah 99.8923
但是在SunOS
运行时出现以下错误
No Name Mark
: arithmetic syntax error.sh[5]: printf: 80.1234
: arithmetic syntax error0.1234
linux_sc.sh[5]: printf: warning: invalid argument of type f
80.12
: arithmetic syntax error.sh[6]: printf: 99.8923
: arithmetic syntax error9.8923
linux_sc.sh[6]: printf: warning: invalid argument of type f
99.89
是的,很确定您使用的脚本具有Windows样式的CRLF行尾,而Unix系统使用LF。 当您在Windows上写入文件并且不以转换行尾的方式将其传输到另一台计算机时,会发生这种情况。
使用示例脚本并通过unix2dos
运行它,然后尝试运行它会给出:
No Name Mark
: invalid numberprintf: 80.1234
1 James 0.00
: invalid numberprintf: 99.8923
2 Sarah 0.00
不完全相同的输出,但是我正在Linux而不是SunOS上进行测试,所以这是可以预期的。 不过,距离足够近以表明是问题所在。
如果您在SunOS盒子上安装了dos2unix
,请通过它运行脚本,然后查看是否可以解决问题。 或perl -pi -e 's/\\r//' your.sh
是剥离多余回车符的另一种方法。 或tr -d '\\r' < your.sh > new.sh
或许多其他方式; 取决于安装了典型的SunOS设置。 我好几年没用过了。 不记得我的头顶了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.