変数を使用したシェルスクリプトの呼び出し

変数を使用したシェルスクリプトの呼び出し

内部的に変数を呼び出すシェルスクリプトがあります(実行可能なシェルスクリプトを保存するため)。

シェルスクリプトの起動

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

コードを調べて、値が予想と異なる理由を見つけ、これらのエラーを修正する必要があります。

関連情報