在 Linux 上跑起來沒問題的 shell script 到 macOS 上發現有狀況,追了問題後發現是 wc -l
輸出的格式不同導致的。
Linux 上面是直接輸出數字:
$ echo abc | wc -l 1
macOS 上面則會在開頭看到 trailing space:
$ echo abc | wc -l 1
可以搜到蠻多地方都有在討論這個問題,像是這篇:「WC on OSX - Return includes spaces」。
不過看起來 POSIX 標準沒有直接規定輸出的格式,只好照著語意再處理了,像是 | awk '{print $1}'
之類的方法。
我是在 wc -l 之後再 | tr -d ' ' 把空白砍掉