内部的に変数を呼び出すシェルスクリプトがあります(実行可能なシェルスクリプトを保存するため)。
シェルスクリプトの起動
var=$(awk -F'|' '{print $2}' $TEMPFILE)
変数の値は. /lapp2/Scripts/mdm.ksh
シェルを呼び出して実行
$var
上記のシェルの実行方法が失敗します。 (文字列で読みますか?)
ただし、コマンドを直接作成すると、シェルスクリプトが実行されます。
答え1
あなたの変数に$var
あなたが指定した値は含まれていません。あなたの質問によると、次の内容を含める必要があります。
. /lapp2/Scripts/mdm.ksh
ただし、デバッグ値は実際には以下が含まれているecho "var is '$var'"
ことを示しています。$var
/etlapp2/$1/mdm/Scripts/mdmxftpg.pl /etlapp2/$1/mdm/Scripts/mdmxftpg.aimtlane
これには2つの問題があります。実際の値が期待値ではないことは明らかです。ただし、より微妙に言えば、パスの一部には最初のコマンドライン引数の補間ではなく$var
リテラルが含まれています。$1
割り当て中、ある時点で二重引用符の代わりに一重引用符を使用したようです$var
。
これら2つのオプションを比較してみてください
a='apple'; var='/path/to/$a/script.sh'; echo "var=$var" # incorrect
a='apple'; var="/path/to/$a/script.sh"; echo "var=$var" # correct
コードを調べて、値が予想と異なる理由を見つけ、これらのエラーを修正する必要があります。