5.6.1 setコマンドで設定できるシェルオプション
setコマンドで設定できるシェルオプションを次の表に示します。setコマンドについては「9.3 シェル標準コマンド」の「setコマンド(シェルオプションを設定する,配列を作成する,または変数の値を表示する)」を参照してください。
名称 |
設定方法 |
シェルオプションを設定した場合の意味 |
デフォルト値 |
---|---|---|---|
allexport※1 |
-a -o allexport |
変数をすべて自動的にエクスポートします。 |
無効 |
braceexpand |
-o braceexpand |
ブレース展開を有効にします。ブレース展開とは,ブレース({ })で囲んだ部分を複数の単語にする展開のことです。ブレースで囲まれた1つ以上のコンマで区切られた文字をブレースの前後の文字と結合し,1つの変数として展開します。例えば,a{1,2,3}はa1,a2,a3に展開されます。 |
有効 |
bgnice※2 |
-o bgnice |
すべてのバックグラウンドジョブの優先順位を下げて実行します。 |
無効 |
noglob |
-f -o noglob |
ファイル名置換を禁止します。ファイル名置換については,「5.1.6(6) 置換」を参照してください。 また,ブレース展開を無効にします。ブレース展開を有効にする場合は,noglobシェルオプションを無効にしてください。シェルオプションを無効にする方法については,「9.3 シェル標準コマンド」の「setコマンド(シェルオプションを設定する,配列を作成する,または変数の値を表示する)」を参照してください。 |
無効 |
nounset |
-u -o nounset |
置換対象の変数に値が設定されていない場合,ジョブはエラー終了し,シェルが終了します。 |
無効 |
verbose※3 |
-v -o verbose |
ジョブ定義スクリプトから読み込んだ内容をコマンド実行前に標準エラー出力に出力します。 |
無効 |
xtrace |
-x -o xtrace |
シェル変数PS4の値を行の先頭に配置した上で,実行されたコマンドとその引数を標準エラー出力に出力します。ただし,[[ ]]コマンド,スクリプト拡張コマンドおよびその引数は出力しません。また,(( ))による算術演算はletコマンドに置き換えられて出力されます。 |
無効 |
- 注※1
-
Windows版では,環境設定パラメーターでVAR_ENV_NAME_LOWERCASE DISABLEを指定した場合は,変数名に英小文字を含む変数をエクスポートできません。そのため,allexportシェルオプションを有効にしたあとに,英小文字を含むシェル変数を定義または値を更新すると,エラーメッセージを出力してバッチジョブを終了します。
- 注※2
-
Windows版ではサポートしていません。
- 注※3
-
verboseオプションを指定すると,ジョブステップを定義するコマンドの入力行出力先が変わります。
-
#-adsh_step_startコマンドの場合
実行した時点でジョブのSTDERRからジョブステップのSTDERRに切り替わるため,#-adsh_step_start自身の入力行出力はジョブのSTDERRに出力されます。
-
#-adsh_step_endコマンドの場合
実行した時点でジョブステップのSTDERRからジョブのSTDERRに切り替わるため,#-adsh_step_end自身の入力行出力はジョブステップのSTDERRに出力されます。
例を次に示します。
- ジョブ定義スクリプト
set -o verbose ←またはset -v #-adsh_step_start S1 cmdA #-adsh_step_error cmdB #-adsh_step_end cmdC
- ジョブのSTDERR
#-adsh_step_start S1 cmdC :
- ジョブステップS1のSTDERR
cmdA #-adsh_step_error cmdB #-adsh_step_end
-
- 注意事項
-
実行時パラメーターやJP1/Advanced Shellエディタでデバッグ実行をする場合,コマンドの実行結果は標準エラー出力へ出力されます。setコマンドでverboseオプションを指定すると,コマンドの実行結果のメッセージは次の行の内容を出力したあとで出力されます。例を次に示します。
- ジョブ定義スクリプト
001: set -o verbose 002: echo "Line 002" 003: echo "Line 003"
- デバッグ実行時の出力例を次に示します。
KNAX7018-I Breakpoint "1": filename="test.ash" line=1 KNAX7032-I Stop in the script "test.ash". 1: set -o verbose Current: set (adshdb) step ←ジョブ定義スクリプトの001行目のsetコマンドを実行 echo "Line 002" ←ジョブ定義スクリプトの002行目を読み込んだ内容を出力 KNAX6112-I Command set(line=1) succeeded. rc=0 E-Time=0.000s C-Time=0.000s ←ジョブ定義スクリプトの001行目のsetコマンドの結果出力 KNAX7032-I Stop in the script "test.ash". 2: echo "Line 002" Current: echo (adshdb) Line 002 :