9.1 コマンドおよび制御文の記述形式
ジョブ定義スクリプトファイルには,次のコマンドおよび制御文が使用できます。
シェル標準コマンド
シェル拡張コマンド
スクリプト拡張コマンド
スクリプト制御文
スクリプト予約語コマンド
なお,ジョブ定義スクリプトファイルを記述する際は,次の点に注意してください。
行の途中にNULL("0x00"またはC言語での"\0")が混入している場合,ジョブコントローラはその行でNULLが現れる部分までを1行と見なします。その行でNULLのあとにほかの文字列があっても無視されます。不正な実行結果や実行時エラーの要因となるため,NULLを記述しないようにしてください。
(例)
入力行("0x00"を「\0」で示します)
echo "test\0null";echo "test after"
出力例
echo "test
ジョブ定義スクリプトを見やすくするため,またはカバレージ情報が適切に表示されるようにするために,1行にコマンドを1個ずつ記述することを推奨します。「;」を使用して,1行に複数のコマンドを記述することはお勧めしません。
ジョブ定義スクリプトファイルに指定されたコマンドのカバレージ情報を採取する場合は,次の点に注意して記述してください。
1行に記述するコマンドが4個以内の場合は,各コマンドを実行したかどうかの情報を表示できます。
1行に記述するコマンドが32個以内の場合は,ジョブ定義スクリプト全体のコマンド数がすべて実行できたどうかを全体のコマンドで判断できます。
1行に記述するコマンドが32個を超える場合は,33個目以降のコマンドはカバレージ情報を取得しません。ジョブ定義スクリプト内のすべてのコマンドを実行してもC0実行比率が100%になりません。
if文などのスクリプト制御文も,スクリプト制御文全体を1行に記述しないで,キーワード単位で改行することを推奨します。
次に示すキーワードは,単独で1行に記述してください(「fi;fi」のように記述しないでください)。同一の行に記述すると,カバレージ情報が正しく表示されません。
if文の終了を示すfi
doのブロックの終了を示すdone
case文の終了を示すesac
カバレージ情報は,次の内容だけを出力します。
C0情報の場合,行の先頭からC0対象となる最初の4個のコマンド
C1情報の場合,行の先頭から最初の4個の実行パス
1行に複数のコマンドおよび実行パスを記述すると,すべてのカバレージ情報を表示しない場合があります。
例1
・1行に複数のコマンドおよび実行パスを記述した場合
echo 1; echo 2; echo 3; echo 4; echo 5
・複数の行で,コマンドおよび実行パスを記述した場合
echo 1 echo 2 echo 3 echo 4 echo 5
例2
・1行に複数のコマンドおよび実行パスを記述した場合
if true ;then echo 1 ;elif true ;then echo 2 ;elif true ;then echo 3 ;else echo 4 ;fi
・複数の行で,コマンドおよび実行パスを記述した場合
if true then echo 1 elif true then echo 2 elif true then echo 3 else echo 4 fi
端末から標準入力へキーボード入力をするコマンドを実行する場合,入力を完了するには次の操作をしてください。
EOFまで入力する場合
Windowsでは[Enter]を入力後にCtrl+Zを入力して,さらに[Enter]を入力します。
UNIXではCtrl+Dを入力します。
1行入力する場合
[Enter]を入力します。
コマンドおよび制御文の記述形式を次に示します。