Hitachi

JP1 Version 10 JP1/Advanced Shell


5.8.5 パス名を扱うシェル変数を定義する

#-adsh_path_varコマンドを使用すると,パス名を扱うシェル変数を定義できます。パス名を扱うシェル変数を使用すると,それらを含む文字列のパス区切り文字およびディレクトリ区切り文字をWindowsやUNIXなどの環境に合わせて変換できます。

JP1/Advanced Shellは,次の条件をすべて満たす文字列のパス区切り文字およびディレクトリ区切り文字を変換します。パス変換ルール1とパス変換ルール2については,「PATH_CONV_RULEパラメーター」を参照してください。

#-adsh_path_varコマンドは,次のどちらかの場合だけ使用できます。

なお,次のようにすると継続行を指定できます。ただし,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"