letコマンド(数値計算を行って評価する)
形式1
let 算術式[,算術式 ... ]
形式2
((算術式))
機能
算術式による数値計算を行って評価します。
また,letコマンドの代わりに,「((算術式))」と記載することでletコマンドと同様に算術式を計算し,評価できます。
letコマンドは,コンマで区切ると算術式を複数指定できます。複数指定した場合,算術式は左から右へ順に計算します。そのため,コンマで区切って指定した算術式を条件式の判定に使用すると,最後に実行した算術式の結果に従って条件判定をします。また,コンマの前後にスペースが存在すると,算術エラーで終了します。演算を括弧でまとめると,演算の優先順位を変更できます。
終了コード
終了コード |
意味 |
---|---|
0 |
正常終了
|
1 |
正常終了
|
エラー終了
|
|
2 |
エラー終了
|
注意事項
-
この正規組み込みコマンドは,コマンドの構文を誤ってもコマンドを実行しているシェルは終了しません。
-
*,&,<,<<,>および>>などの算術演算子はメタキャラクタとして特別な意味を持っています。これらの文字をletコマンドで使用する場合は,メタキャラクタを無効にする必要があります。
例 1を2ビット左シフトした結果を変数RCに設定します。
ジョブ定義スクリプトの内容
let "RC=1<<2" echo $RC
実行ジョブのSTDOUTファイルの内容
******** JOB SCOPE STDOUT ******** 4
-
letコマンドには指定できるオプションがありません。そのため,letコマンドの引数に「-英字」を指定すると,オプションではなく変数名として解釈し動作します。
例 引数に「-a」を指定すると「-3」と解釈し,終了コードは0になります。
ジョブ定義スクリプトの内容
a=3 let -a echo $?
実行ジョブのSTDOUTファイルの内容
******** JOB SCOPE STDOUT ******** 0
-
「&」やコマンド置換など,別プロセスでletコマンドを実行する場合は,「5.1.7 別プロセスでの実行【UNIX限定】」に示す注意事項もあわせて参照してください。
使用例
-
3+4を行ったあとに2を掛けます。
ジョブ定義スクリプトの内容
let "VAR=2*(3+4)" echo $VAR
実行ジョブのSTDOUTファイルの内容
******** JOB SCOPE STDOUT ******** 14
-
1+2の結果を変数RCに設定します。
ジョブ定義スクリプトの内容
((RC=1+2)) echo $RC
実行ジョブのSTDOUTファイルの内容
******** JOB SCOPE STDOUT ******** 3