9.5.5 #-adsh_path_varコマンド(パス名を扱うシェル変数を定義する)
形式
#-adsh_path_var シェル変数名[, ... シェル変数名]
機能
パス名を扱うシェル変数を定義します。環境ファイルにPATH_CONV_ENABLEパラメーターが定義されている場合に有効となります。
環境ファイルのPATH_CONV_VARパラメーターとPATH_CONV_NOVARパラメーターの指定より優先します。
#-adsh_path_varコマンドは,次のどれかの場合だけ使用できます。
1行目の「#!任意文字列」の次の行
#-adsh_jobコマンドの次の行
1行目(継続行は指定できる)
このコマンドで指定したシェル変数をパス名の先頭に記述すると,そのパス名中のPATH_CONV_ENABLEパラメーターで定義したパス区切り文字とディレクトリ区切り文字が,実行先のOSのパス区切り文字とディレクトリ区切り文字に変換されます。
次の形式で指定したシェル変数と前方一致する記述を,パス名とみなして変換します。
$シェル変数名
${シェル変数名}
変数名は完全一致で判定されるため,シェル変数名の後ろに英数字または「_(アンダーバー)」が付く場合は,対象のシェル変数ではないと判定されて変換されません。
変換後,変換対象の文字列にPATH_CONV_ENABLEパラメーターで定義されたパス区切り文字またはディレクトリ区切り文字が含まれる場合,その区切り文字はジョブ定義スクリプトの実行先のOSに合わせて変換されます。
PATH_CONV_RULEパラメーターでパス変換ルール1とパス変換ルール2のどちらを選択したかでパスの変換結果が異なります。パス変換ルールについては,「PATH_CONV_RULEパラメーター(パス変換ルールを定義する)【Windows限定】」を参照してください。ジョブ定義スクリプトの変換例は,「2.6.2 パス名を変換する」を参照してください。
引数
- シェル変数名
〜<環境変数名>((1〜255バイト))
パス名を扱うシェル変数として定義するシェル変数の名称を指定します。シェル変数は255個まで指定できます。定義したシェル変数をジョブ定義スクリプト中で使用する場合,$シェル変数名または${シェル変数名}と記載します。
すでに設定されているシェル変数や,使用できないシェル変数名については,「5.5 シェル変数」を参照してください。
終了コード
終了コード |
意味 |
---|---|
0 |
正常終了 |
1 |
エラー終了 |
注意事項
このコマンドによる変換は行ごとに実施されます。このため,ジョブ定義スクリプト内で行が継続している場合,正しく変換されないことがあります。
例として,ジョブ定義スクリプトに「$DIR1改行コード\\bar1\\…」と記述し,パス変換ルール1を指定してLinux上で変換した場合を次に示します。
#-adsh_path_var DIR1,DIR2 echo foo > "$DIR1 ←""の途中で改行されているため変換されない。 \\bar1\\"$DIR2\\bar2"bar3" ←「$DIR2\\bar2」が「$DIR2/bar2」に変換される。
同様に,ジョブ定義スクリプトに「$DIR1改行コード/bar1/…」と記述し,パス変換ルール2を指定してWindows上で変換した場合の例を次に示します。
#-adsh_path_var DIR1,DIR2 echo foo > '$DIR1 /bar1/"$DIR2/bar2"bar3' ←「$DIR2/bar2」が「$DIR2\\bar2」に変換される。
コメント内の文字列も変換されます。
SPOOLJOB_CHILDJOBパラメーターにDELETEを指定した場合,子孫ジョブとして実行するジョブ定義スクリプトはスクリプトイメージが出力されません。そのため,子孫ジョブで実行したジョブ定義スクリプトに対して,このコマンドで定義した変換規則に基づいて変換した場合,変換結果は出力されないので注意してください。
パス変換ルール2の場合でも,「"(ダブルクォーテーション)」で囲んだ範囲内に「'(シングルクォーテーション)」を入れ子として指定することはできません。指定するとパス変換の対象となるので注意してください。
-
#-adsh_path_varコマンドで指定した変数は,別プロセスではパスを扱う変数として定義されません。別プロセスでもパスを扱う変数として定義したい場合は,PATH_CONV_VARパラメーターとPATH_CONV_NOVARパラメーターで指定してください。【Windows限定】