exprで負の数を含む計算が失敗する【FreeBSD】
exprコマンドで少しハマったこと。
HackerRankの問題を解くのに「簡単そうだからシェルスクリプトでやってみるか」とガリガリ書いてみたが、
どうもexprの計算でエラーになる箇所がある。
### 1つ目が正の数だと、エラーにならない % expr 1 + -1 0 ### 1つ目が負の数だと、エラーになる % expr -1 + 1 expr: illegal option -- 1 expr: usage: expr [-e] expression %
どうやらFreeBSDのexprコマンドでは、第一引数に負の数を渡すと
エラーになる仕様みたい。
http://www.freebsd.org/cgi/man.cgi?query=expr&sektion=&n=1
"EXAMPLE"の項目に、「negative number(負の数)は括弧で囲むように」って書いてある。
しかも、括弧をつけるときはエスケープしてあげないといけない。
### '('や')'をエスケープしないとエラー % expr ( -1 + 1 ) Badly placed ()’s. ### \でエスケープしたら成功 % expr \( -1 + 1 \) 0 %
そういえば、dateコマンドで表示する日付をずらすときも
FreeBSDではコマンドが違ったような。
d.hatena.ne.jp