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