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