繁体   English   中英

如何解决printf中的算术语法错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM