使用变量调用 shell 脚本

使用变量调用 shell 脚本

我有一个 shell 脚本,它将在内部调用一个变量(存储可执行 shell 脚本)

Shell 脚本启动

var=$(awk -F'|' '{print $2}' $TEMPFILE)

变量中的值为. /lapp2/Scripts/mdm.ksh

通过调用 shell 来执行它

$var

上述执行 shell 的方法失败(它是作为字符串读取的吗?)

但是,如果我直接编写命令,shell脚本会执行

答案1

您的变量$var不包含您所说的应包含的值。根据你的问题,它应该包含以下内容:

. /lapp2/Scripts/mdm.ksh

但调试值echo "var is '$var'"显示$var实际上包含:

/etlapp2/$1/mdm/Scripts/mdmxftpg.pl /etlapp2/$1/mdm/Scripts/mdmxftpg.aimtlane

这里有两个问题。很明显,实际值不是预期值。但更微妙的是,请注意路径的一部分$var包含文字$1,而不是第一个命令行参数的插值。我怀疑您在分配 期间的某个时刻使用了单引号而不是双引号$var

对比这两种选择

  • a='apple'; var='/path/to/$a/script.sh'; echo "var=$var" # incorrect
  • a='apple'; var="/path/to/$a/script.sh"; echo "var=$var" # correct

您需要检查代码以找出该值不符合预期的原因并修复这些错误。

相关内容