簡體   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