Posix
bc:POSIX 是否禁止獨立使用關係運算符?
我想將兩個數字與
bc
. 根據StackOverflow 上這個高度評價的答案,我可以這樣做:printf '%s\n' '1.2 > 0.4' | bc
bc
發送1
到 STDOUT,指示該語句為真(如果該語句為假,它將返回 0)。與所有其他運算符不同,關係運算符(’<’、’>’、"<="、">="、"=="、"!=" ) 僅作為 if、while、或在 for 語句中。
也許我誤解了,但這種語言似乎不允許上面範例中使用的語法。
獨立使用關係運算符是否
bc
違反了 POSIX?如果是這樣,我應該如何重寫我的範例?
也許我誤解了,但這種語言似乎不允許上面範例中使用的語法。
該範例假設使用 GNU bc,它為 bc 語言添加了自己的擴展。如其手冊中所述,您應該使用
-s
開關使其處理確切的 POSIX bc 語言,或者-w
如果您希望它發出有關擴展的警告,則應使用開關:$ echo '1.2 > 0.4' | bc -s (standard_in) 2: Error: comparison in expression $ echo '1.2 > 0.4' | bc -w (standard_in) 2: (Warning) comparison in expression 1 $ echo '1.2 > 0.4' | bc 1
如果是這樣,我應該如何重寫我的範例?
$ printf 'if(%s > %s){a=1};a\n' 1.2 0.4 | bc -s 1
感謝@icarus 提供了更短、更簡單的眼睛版本。