Hitachi

JP1 Version 10 JP1/Advanced Shell


PIPE_CMD_LASTパラメーター(パイプの最終コマンドの実行プロセスを定義する)【UNIX限定】

〈このページの構成〉

形式

#-adsh_conf PIPE_CMD_LAST {CURRENT|OTHER}

機能

パイプラインの最終コマンドをカレントプロセスで実行するかどうかを定義します。

次のようにパイプラインの最終コマンドで変数の内容を更新し,パイプライン以降のコマンドで更新した内容を使用する場合は,CURRENTを指定してください。

ジョブ定義スクリプトの内容
typeset -i CNT=0
cat INFILE | while read STR
do
  echo "$STR"
  let CNT=CNT+1
done
echo "Line count is $CNT."

この結果,while文終了後のシェル変数CNTには,readコマンドで読み込まれた行数(INFILEの行数)が格納されます。

一方,次のようにパイプラインの最終コマンドで変数の内容を更新するが,パイプライン実行前の変数の内容で,パイプライン終了後に再度利用したい場合はOTHERを指定してください(CBL_SYSUT1,CBL_SYSUT2はCBLUAPxの共通インターフェース用変数と仮定します)。

ジョブ定義スクリプトの内容
CBL_SYSUT1=/file1
CBL_SYSUT2=/file2
CBLUAP1
cat INFILE | while read DIR
do
CBL_SYSUT1=`cmd1 y`
CBL_SYSUT2=`cmd2 y`
CBLUAP2
done
CBLUAP3

この場合,while文終了後のシェル変数CBL_SYSUT1には"/file1",CBL_SYSUT2には"/file2"が格納されています。

このパラメーターは同一の環境ファイル内で複数回指定することはできません。複数回指定した場合は,エラーメッセージが出力されてジョブは終了します。

オペランド

CURRENT

パイプラインの最終コマンドが次に示すコマンドの場合,カレントプロセスで動作します。

  • シェル標準コマンド

  • 代入式

  • スクリプト制御文

次の機能で一時ファイルを使用します。一時ファイルは環境設定パラメーターTEMP_FILE_DIRで指定されたディレクトリに作成します。

対象機能
  • パイプ

  • コマンド置換(パイプ(|)でつながれた1つのコマンド群だけをコマンド置換に指定した場合だけ)

OTHER

パイプラインの最終コマンドは別プロセスで動作します。

注意事項

使用例

次に示す入力ファイルとジョブ定義スクリプトを使って,PIPE_CMD_LASTパラメーターを指定した場合の実行結果の違いを示します。