Hitachi

JP1 Version 11 JP1/Advanced Shell 


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

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

PATH_CONV_NOVARパラメーターを使用することで,パス名を扱わないシェル変数名を定義できます。PATH_CONV_VARの指定と組み合わせて,複雑な指定ができます。

ジョブコントローラは,次の条件をすべて満たす文字列のパス区切り文字およびディレクトリ区切り文字を変換します。パス変換ルール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コマンドおよびPATH_CONV_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_conf PATH_CONV_VAR DIR3                     ←シェル変数の定義1
  • ジョブ定義スクリプトの指定

    #-adsh_path_var PATH,DIR         ←シェル変数の定義2
     
    DIR="/home/hitachi/bin"          ←「DIR="C:\\hitachi\\bin"」にパス文字列の置換1で変換
     
    "$DIR/myprog"                    ←シェル変数の定義2に従い「"$DIR\\myprog"」に変換
     
    "${DIR}/myprog"                  ←シェル変数の定義2に従い「"${DIR}\\myprog"」に変換
     
    DIR2=$DIR
    "$DIR2/myprog"                   ←「$DIR2」はシェル変数の定義1,2にないため,変換されない
     
    $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"              ←シェル変数の定義2に従い「..\\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_conf PATH_CONV_VAR DIR3                     ←シェル変数の定義1
  • ジョブ定義スクリプトの指定

    #-adsh_path_var PATH,DIR        ←シェル変数の定義2
     
    DIR="C:\\hitachi\\bin"          ←パス文字列の置換1に従い「DIR="/home/hitachi/bin"」に変換
    "$DIR\\myprog"                  ←シェル変数の定義2に従い「"$DIR/myprog"」に変換
     
    "${DIR}\\myprog"                ←シェル変数の定義2に従い「"${DIR}/myprog"」に変換
     
    DIR2=$DIR
    "$DIR2\\myprog"                 ←「$DIR2」はシェル変数の定義1,2にないため,変換されない
     
    $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"           ←シェル変数の定義2に従い「../bin/:$DIR」に変換
                                      パス区切り文字も変換
     
    "$DIR2\\myprog" > nul           ←ファイル入出力時のファイルパスの変換に従い「/dev/null」に変換

(c) PATH_CONV_VARパラメーターとPATH_CONV_NOVARパラメーターの使用例

  • 環境ファイルの指定

    #-adsh_conf PATH_CONV_VAR DIR*                ←シェル変数の定義1
    #-adsh_conf PATH_CONV_NOVAR DIRNO*            ←シェル変数の定義2

    シェル変数の定義1は,名称の先頭がDIRのシェル変数はパス名を扱うシェル変数として定義しています。シェル変数の定義2は,名称の先頭がDIRNOのシェル変数はパス名を扱わないシェル変数として定義しています。後続の指定が優先するため,名称の先頭がDIRNOのシェル変数を除き,名称の先頭がDIRのシェル変数はパス名を扱うシェル変数として定義したことになります。

  • ジョブ定義スクリプトの指定

    #-adsh_path_var DIRNORTH                       ←シェル変数の定義3

    DIRNORTHはパス名を扱うシェル変数として定義しています。#-adsh_path_varコマンドの定義は環境ファイルの定義よりも優先します。このため,名称の先頭がDIRNOであってもDIRNORTHはパス名を扱う変数となります。

(2) ジョブ定義スクリプトイメージへの出力例

ジョブ実行ログには,パスを変換する前のジョブ定義スクリプトに加え,変換したあとの行も出力します。また,ジョブ定義スクリプト中で合致した変換規則,ジョブ定義スクリプト名および行番号をメッセージとして出力します。

********  ジョブコントローラのメッセージ出力  ********
(省略)
19:41:24 000071 KNAX6803-I PATH_CONV_ACCESSパラメーターの変換規則に合致しました。 filename="D:\home\user001\path_conv.ash" line=4 rule_str="./local.log":".\\mylog"
(省略)
 
********   ジョブ定義スクリプトの内容    ********
 
***** D:\home\user001\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
 
***** パス変換行(D:\home\user001\path_conv.ash) *****
0003 : DIR="c:\\Program Files"; DIR2="c:\\temp\\tmpfile"
0004 : "$DIR\\myprog" > ./local.log
 
***** パス変換情報 *****
KNAX6800-I パスの変換規則に合致しました。 filename="D:\home\user001\path_conv.ash" line=3 rule_str="/home/hitachi/bin":"c:\\Program Files"
KNAX6800-I パスの変換規則に合致しました。 filename="D:\home\user001\path_conv.ash" line=3 rule_str="/tmp":"c:\\temp"
KNAX6801-I パスを扱うシェル変数による変換規則に合致しました。 filename="D:\home\user001\path_conv.ash" line=4 rule_var="DIR"