5.8.5 パス名を扱うシェル変数を定義する
#-adsh_path_varコマンドを使用すると,パス名を扱うシェル変数を定義できます。パス名を扱うシェル変数を使用すると,それらを含む文字列のパス区切り文字およびディレクトリ区切り文字をWindowsやUNIXなどの環境に合わせて変換できます。
JP1/Advanced Shellは,次の条件をすべて満たす文字列のパス区切り文字およびディレクトリ区切り文字を変換します。パス変換ルール1とパス変換ルール2については,「PATH_CONV_RULEパラメーター」を参照してください。
-
「"(ダブルクォーテーション)」で囲まれた文字列(パス変換ルール1の場合)
-
「'(シングルクォーテーション)」で囲まれていない文字列(パス変換ルール2の場合)
-
環境ファイルのPATH_CONV_ENABLEパラメーターで定義されたパス区切り文字で区切られた文字列の中で,文字列「$パスを扱うシェル変数名」または文字列「${パスを扱うシェル変数名}」と前方一致する文字列
#-adsh_path_varコマンドは,次のどちらかの場合だけ使用できます。
-
1行目の「#!任意文字列」の次の行
-
#-adsh_jobコマンドの次の行
なお,次のようにすると継続行を指定できます。ただし,1行目の#-adsh_path_varコマンドの後ろにはシェル変数名を指定できません。
1行目:#-adsh_path_var 2行目:#-adsh var001,var002,var003,var004
- 〈この項の構成〉
(1) 使用例
パス名を扱うシェル変数「PATH」「DIR」「DIR3」を#-adsh_path_varコマンドに定義する例を次に示します。
(a) Windowsの場合
-
環境ファイルの指定
#-adsh_conf PATH_CONV_ENABLE / : ←パス変換の有効化 #-adsh_conf PATH_CONV_RULE 1 ←パス変換ルール1を選択 #-adsh_conf PATH_CONV /home/hitachi "C:\\hitachi" ←パス文字列の置換1 #-adsh_conf PATH_CONV /tmp/jp1as "D:\\jp1as_tmp" ←パス文字列の置換2 #-adsh_conf PATH_CONV /tmp "C:\\temp" ←パス文字列の置換3 #-adsh_conf PATH_CONV_ACCESS /dev/null nul ←ファイル入出力時のファイルパスの変換
-
ジョブ定義スクリプトの指定
#-adsh_path_var PATH,DIR,DIR3 ←シェル変数の定義1 DIR="/home/hitachi/bin" ←「DIR="C:\\hitachi\\bin"」にパス文字列の置換1で変換 "$DIR/myprog" ←シェル変数の定義1に従い「"$DIR\\myprog"」に変換 "${DIR}/myprog" ←シェル変数の定義1に従い「"${DIR}\\myprog"」に変換 DIR2=$DIR "$DIR2/myprog" ←「$DIR2」はシェル変数の定義1にないため,変換されない $DIR/myprog ←"(ダブルクォーテーション)で囲まれていないため,変換されない FILE1="/tmp/jp1as/file" ←パス文字列の置換2に従い「"D:\\jp1as_tmp\\file"」に変換 DIR3="" ls "$DIR3../bin" ←シェル変数の定義1に従い「"..\\bin"」に変換。相対パスも変換 DIR4="/home/hitachi/sbin:$DIR2" ←パス文字列の置換1に従い「C:\\hitachi\\sbin;$DIR2」に変換。 パス区切り文字も変換 PATH="../bin/:$DIR" ←シェル変数の定義1に従い「..\\bin\\;$DIR」に変換。 パス区切り文字も変換 "$DIR2/myprog" > /dev/null ←「nul」にファイル入出力時のファイルパスの変換で変換
(b) UNIXの場合
-
環境ファイルの指定
#-adsh_conf PATH_CONV_ENABLE \\ ; ←パス変換の有効化 #-adsh_conf PATH_CONV "C:\\hitachi" /home/hitachi ←パス文字列の置換1 #-adsh_conf PATH_CONV "D:\\jp1as_tmp" /tmp/jp1as ←パス文字列の置換2 #-adsh_conf PATH_CONV "C:\\temp" /tmp ←パス文字列の置換3 #-adsh_conf PATH_CONV_ACCESS nul /dev/null ←ファイル入出力時のファイルパスの変換
-
ジョブ定義スクリプトの指定
#-adsh_path_var PATH,DIR,DIR3 ←シェル変数の定義1 DIR="C:\\hitachi\\bin" ←パス文字列の置換1に従い「DIR="/home/hitachi/bin"」に変換 "$DIR\\myprog" ←シェル変数の定義1に従い「"$DIR/myprog"」に変換 "${DIR}\\myprog" ←シェル変数の定義1に従い「"${DIR}/myprog"」に変換 DIR2=$DIR "$DIR2\\myprog" ←「$DIR2」はシェル変数の定義1にないため,変換されない $DIR\\myprog ←"(ダブルクォーテーション)で囲まれていないため,変換されない FILE1="D:\\jp1as_tmp\\file" ←パス文字列の置換2に従い「"/tmp/jp1as/file"」に変換 DIR3="" ls "$DIR3..\\bin" ←シェル変数の定義1に従い「"../bin"」に変換。相対パスも変換 DIR4="C:\\hitachi\\sbin;$DIR2" ←パス文字列の置換1に従い「/home/hitachi/sbin:$DIR2」に変換。 パス区切り文字も変換 PATH="..\\bin\\;$DIR" ←シェル変数の定義1に従い「../bin/:$DIR」に変換 パス区切り文字も変換 "$DIR2\\myprog" > nul ←ファイル入出力時のファイルパスの変換に従い「/dev/null」に変換
(2) ジョブ定義スクリプトイメージへの出力例
ジョブ実行ログには,パスを変換する前のジョブ定義スクリプトに加え,変換したあとの行も出力します。また,ジョブ定義スクリプト中で合致した変換規則,ジョブ定義スクリプト名および行番号をメッセージとして出力します。
******** JP1/Advanced Shell MESSAGE ******** (省略) 21:58:28 000903 KNAX6803-I Access path convert rule matched. filename="D:\home\path_conv.ash" line=4 rule_str="./local.log":"./myprog.log" (省略) ******** Script IMAGE ******** ***** D:\home\path_conv.ash ***** 0001 : #-adsh_job JOB001 0002 : #-adsh_path_var DIR 0003 : DIR="/home/hitachi/bin"; DIR2="/tmp/tmpfile" 0004 : "$DIR/myprog" > ./local.log 0005 : exit ***** converted lines in D:\home\path_conv.ash ***** 0003 : DIR="C:\\Program Files"; DIR2="C:\\temp\\tmpfile" 0004 : "$DIR\\myprog" ***** CONVERSION INFORMATION ***** 21:58:28 000903 KNAX6800-I Path convert rule matched. filename="D:\home\path_conv.ash" line=3 rule_str="/home/hitachi/bin":"C:\\Program Files" 21:58:28 000903 KNAX6800-I Path convert rule matched. filename="D:\home\path_conv.ash" line=3 rule_str="/tmp":"C:\\temp" 21:58:28 000903 KNAX6801-I Path convert rule matched. filename="D:\home\path_conv.ash" line=4 rule_var="DIR"