fact
以下のような割り当てを行う場合、bash シェルは変数をデフォルトで整数または long と見なしますか?
fact=2
ない。文字列として扱われます。すべてのシェル変数の値は、特に宣言されていない限り (たとえばdeclare -i fact
、非標準のシェル拡張で) 文字列です。「何ビットあり、符号があるか」という問題は、 で算術展開を行うか、変数値を引数としてや など$(())
の他のツールに渡す場合にのみ意味があります。expr
bc
算術展開のためのPOSIXシェル仕様は言う
符号付き長整数演算のみが必要です。
bashマニュアルは保証するだけです
評価はオーバーフローのチェックなしで固定幅整数で行われますが、0 による除算はトラップされ、エラーとしてフラグが立てられます。
Csigned long
は >= 32 ビットであることを保証しているため、少なくとも 32 ビットの符号付き算術演算を安全に想定できます。64ビットシステムでは64ビットを期待しています。