我遇到了需要帮助的命令替换问题。我有一些使用需要执行的命令来创建文本文件的过程。
File1.txt
Command_ID|Command_Name|Command
112121|Export XML Components|/Scripts/Export_XML.sh "Argument1" "Argument2"
112122|Test XML integrity|/Scripts/Test_XML.sh "Argument1" "Argument2" "Argument3"
我的执行这些命令的脚本读取File1.txt并尝试使用以下命令替换执行第三列中的命令。此处的目标是顺序读取和执行命令,并使用其返回字符串和返回代码更新表。如果遇到非零返回码,脚本中还有逻辑可以停止处理并存储当前行号。解决问题后,可以从失败的行重新启动脚本
VAR_File=/files/File1.txt
while IFS=$'|' read -r -a myArray
do
echo "${myArray[2]}"
VAR_Command="${myArray[2]}"
VAR_Return_String=$("${VAR_Command}")
VAR_Return_Code=$?
done < ${VAR_File}
参数带有双引号的命令未正确执行。
我在做什么错,我该如何解决?
谢谢
答案 0 :(得分:0)
在脚本中,VAR_Command
被设置为File1.txt
中的某个字符串,例如/Scripts/Export_XML.sh "Argument1" "Argument2"
。
使用此字符串运行$(${VAR_Command}"
时,shell尝试执行名为Export_XML.sh "Argument1" "Argument2"
的脚本(文件名内带有引号),而不是参数{的脚本Test_XML.sh
{1}}和"Argument1"
被传递。
如果通过将"Argument2"
替换为$("${VAR_Command}")
来删除引号,则您的代码将按预期工作。