6.2.10 関数を実行する(finishコマンド)
関数からリターンするまでジョブ定義スクリプトを実行するコマンドは,finishコマンドです。finishコマンドの短縮形は"f"です。finishコマンドの形式を次に示します。
finish
finishコマンドを実行した場合の動作を次に示します。
- finishコマンドの後ろに引数を指定しない場合
-
関数内で停止しているときは,現在の関数の終わりまで実行するというメッセージが出力され,関数の終わりまでジョブ定義スクリプトを実行します。ジョブ定義スクリプトの実行が停止すると,停止位置のフレーム情報を表示し,次に実行予定の行番号とそのソースファイル行を表示します。停止位置のフレーム情報の表示形式を次に示します。
- 停止位置のフレーム情報
Num Function File:Line フレーム番号 関数名 ファイル名:行番号
-
フレーム番号:フレームの番号です。フレーム番号には常に0を表示します。
-
関数名:フレーム情報に対応する関数名に,関数を呼び出しているジョブ定義スクリプトファイル名を付けた名称です。関数が呼び出されていない状態の場合,関数名を<main>として表示します。63バイトまで表示できます。
-
ファイル名:現在停止中のファイル名を示します。
-
行番号:現在停止中の行番号を示します。
ジョブ定義スクリプト終端で停止している場合は<EOF>と表示します。trapコマンドのactionを実行中に停止している場合は<Trap action>と表示します。
-
どの関数にも入っていない状態で停止しているときおよびジョブ定義スクリプトが実行されていないときは,エラーメッセージが出力されます。
- finishコマンドの後ろに引数を指定した場合
-
コマンドを実行すると,エラーとなります。
- 注意事項
-
関数内の後続の行で,ブレークポイント,ウォッチポイントおよびシグナルによる停止判定を満たした場合,ジョブ定義スクリプトの実行を停止します。
- 使用例
-
2行目の「echo」の実行前で停止しているときにfinishコマンドを実行すると,9行目の「echo」の実行前で停止し,フレーム情報を表示します。
1: funcA(){ 2: echo "funcA" 3: num=10 4: } 5: 6: val=1 7: num=2 8: funcA 9: echo $num
2: echo "funcA" Current: echo (adshdb) finish KNAX7036-I Run till exit of current function. … Num Function File:Line 0 <main> test.ash:9 KNAX7032-I Stop in the script "test.ash". 9: echo $num Current: echo (adshdb)