Hitachi

Advanced Shell 


2.6.3 ファイルの入出力時にファイルパスを変換する

ファイルを入出力する場合に定義した規則に従って,ジョブ定義スクリプトに指定したファイルパスを入出力の対象となるファイルパスに変換します。指定したファイルパスと入出力するファイルパスは,完全に一致させる必要があります。

〈この項の構成〉

(1) ファイル入出力時のファイルパス変換の実行条件

ファイル入出力時のファイルパス変換は,リダイレクト文字(<,>,<>,>>)によって,ファイルへの入出力が発生するタイミングで変換します。

なお,.(ドット)コマンドまたは#-adsh_scriptコマンドでジョブ定義スクリプトを実行する場合も,ジョブ定義スクリプトの読み込み(入力)が発生します。しかし,これらについてはファイル入出力時のファイルパス変換では変換されません。変換する場合は,コマンド実行時に引数を変換するCOMMAND_CONV_ARGパラメーターで変換の規則を定義してください。

ファイル入出力時のファイルパス変換は,「2.6.2 パス名を変換する」で説明されているパス変換によって変換されたジョブ定義スクリプトの内容に対して実行されます。

ファイル入出力時のファイルパス変換は,異なるプラットフォーム間の変換(UNIX→Windows,Windows→UNIX)だけでなく,同じプラットフォーム間の変換(UNIX→UNIX,Windows→Windows)も実行できます。

(2) ファイル入出力時のファイルパスの変換例

ファイルを入出力する場合に定義した環境ファイルの情報(PATH_CONV_ACCESSパラメーター)に従って,ジョブ定義スクリプトがファイルの入出力時にどのように変換されるかを以降に説明します。

(a) 環境ファイルの情報

環境ファイルの例を次に示します。

#-adsh_conf PATH_CONV_ENABLE / :
#-adsh_conf PATH_CONV /tmp "D:\\tmp"
#-adsh_conf PATH_CONV_ACCESS /dev/null nul

(b) 実行前のジョブ定義スクリプト

実行前のジョブ定義スクリプトの例を次に示します。

while read LOG
do
  echo $LOG > /dev/null
done < "/tmp/input.txt"

(c) 実行時のジョブ定義スクリプト

実行時には次のように解釈されて実行します。

while read LOG
do
  echo $LOG > nul
done < "D:\tmp\input.txt"

(3) PATH_CONVパラメーターとPATH_CONV_ACCESSパラメーターとの組み合わせ例

Windows版で,PATH_CONVパラメーターとPATH_CONV_ACCESSパラメーターを組み合わせて使用する例を示します。この2種類のパラメーターは,PATH_CONVパラメーターの方が優先的に処理されます。同じパラメーターの中では,先頭から順に処理されます。

(a) 環境ファイルの内容

環境ファイルの内容を,各行に番号を付けて示します。

1.   #-adsh_conf PATH_CONV_ENABLE / :
2.   #-adsh_conf PATH_CONV /tmp "C:\\temp"
3.   #-adsh_conf PATH_CONV_ACCESS /tmp/result.log "C:\\jp1as_tmp\\result3.log"
4.   #-adsh_conf PATH_CONV_ACCESS "C:\temp\result.log" "C:\\jp1as_tmp\\result4.log"
5.   #-adsh_conf PATH_CONV_RULE 1

(b) ジョブ定義スクリプトファイルの内容と変換方法

(a)の環境ファイルに対して次のジョブ定義スクリプトを実行した場合,それぞれが異なる規則で変換されます。

cat data.txt > "/tmp/result.log"

この場合,PATH_CONV_RULEパラメーターは1が指定されていることから,"(ダブルクォーテーション)で囲まれた範囲がPATH_CONVパラメーターによって変換されます。

catコマンドに指定した"/tmp/result.log"は"(ダブルクォーテーション)で囲まれているため,環境ファイルの内容の行番号2の規則に従って"C:\\temp\\result.log"に変換されます。その結果,行番号3の定義には合致しないで,行番号4が定義に合致し,最終的に"C:\\jp1as_tmp\\result4.log"に変換されます。

cat data2.txt > /tmp/result.log

この場合,catコマンドに指定した/tmp/result.logが,"(ダブルクォーテーション)で囲まれていないため,行番号2のPATH_CONVパラメーターの変換対象になりません。その結果,行番号3の定義に合致し,"C:\\jp1as_tmp\\result3.log"に変換されます。