5.3 算術演算
ジョブ定義スクリプト内では,typesetコマンドの-iオプションで明示的に整数型と宣言しないかぎり,変数の値は数字であっても文字として扱われます。しかし,letコマンドまたは(())の中に算術演算を行う演算子を指定すると,変数に代入されている値を数値として扱い,算術演算が行えます。
Advanced Shellは,算術演算子,増分・減分演算子,ビットごとの論理演算子,代入演算子が使用できます。演算子の共通仕様を説明します。
letコマンドで算術演算する場合,変数と演算子の間にスペースを入れないでください。スペースを入れた場合は,書式不正でエラー終了します。変数と演算子の間にスペースを入れたい場合は,letコマンドの省略形である(( ))を使用するか,またはクォーテーションで算術式を囲む必要があります。
使用例
let NUM = 100 - 99 # クォーテーションで囲まれていないため,エラー終了する let " NUM = 100 - 99 " # クォーテーションで囲まれているため,算術式は実行される (( NUM = 100 - 99 )) # 省略形(( ))を使用しているため,算術式は実行される
算術式には数値および数字が代入された変数を指定できます。数値は基数表記(基数#値)で指定できます。
基数表記を省略した場合は10進数と解釈され,演算が実行されます。
数字以外の文字が代入されている変数を指定した場合は,エラー終了します。
-
算術演算に指定する値,および演算結果の値は,有効範囲内にしてください。指定した値および演算結果の値が有効範囲外の場合,正しい結果を求めることができません。
なお,有効範囲は,環境変数ADSH_INTEGER_MODEの指定値によって異なります。
表5‒30 有効範囲(算術演算に指定できる値および演算結果の値) 環境変数ADSH_INTEGER_MODEの指定値 有効範囲 32
-2147483648~2147483647
64,または未定義
-9223372036854775808~9223372036854775807