0
我已经继承了一个shell脚本,它执行一个带有变量的命令。 我加入了更多细节,对不起,我是不是在早期的细节清楚,我不是外壳脚本shell脚本传递星号
#!/bin/sh
ExecuteCommand() {
Command=`echo -e ${2}`
Comment=${4}
echo "INFO: ${Comment}"
echo "# ${Comment}" >> ${CommandsLog}
echo "${Command}" | paste -s -d' ' | tee -a ${CommandsLog}
echo "" | tee -a ${CommandsLog}
eval ${Command} | grep -v "ERROR : bad number of fields"
ExitCode=$?
if [ "${ExitCode}" != "0" ] && [ "${ExitCode}" != "" ]
then
exit ${ExitCode}
fi
}
set Option = echo ` '.*(def).*'`
echo $Option
ExecuteCommand -command "abc ${Option}"
非常熟悉望着正在执行的命令日志是没有“*
”; 即
.*(def).*
abc '. (def). '
由于命令缺少“”,则命令失败 我曾试图通过在“$选项”可变但到失败。 如何将''传递给命令。
你的问题不明确。 shebang线是好的。下一行似乎执行一个名为'ExecuteCommand'的命令,其中一个选项是'-command',另一个是扩展''abc $ {Option}“''的结果,但脚本中没有任何设置'$ { Option}',因此它可以是空的或者是一个环境变量 - 但是你没有告诉我们关于环境变量的内容。第三行代码选择在'$ {Option}'中运行任何命令的名称 - 或者,如果$ {Option}中没有任何内容,它将运行命令'is'而不是 - 带有一些参数。这是怎么回事? –
现在,如果“脚本的第三行”真的在运行,那么“环境变量'Option'设置为''。*(def)。*''',那么我们就进入了一个不同的球类游戏可能是蟋蟀而不是棒球)但是,关于如何将信息传递到日志文件还有很多未知的知识,也就是说,你如何得到星星的空白并不明显,一般来说,引用星星可以防止它们被扩展 –
在上述正确提到的所有不确定性的情况下,唯一的建议是在你的命令中包含'$ {Option}'的单引号(例如''abc'$ {Option}'“'。我不能保证将解决这个问题,但它是在可能的范围内。 –