我在使用反引号使
shellcript工作时遇到问题.这是我遇到问题的脚本的示例版本:
#!/bin/sh ECHO_TEXT="Echo this" ECHO_CMD="echo ${ECHO_TEXT} | awk -F' ' '{print \$1}'" result=`${ECHO_CMD}`; echo $result; result=`echo ${ECHO_TEXT} | awk -F' ' '{print \$1}'`; echo $result;
该脚本的输出是:
sh-3.2$./test.sh Echo this | awk -F' ' '{print $1}' Echo
为什么使用命令变量的第一个反引号实际上并不执行完整命令,而只返回第一个命令的输出和第二个命令?我错过了一些东西,以便获得执行命令的第一个反引号?
您需要使用eval才能使其正常工作
原文链接:https://www.f2er.com/bash/385086.htmlresult=`eval ${ECHO_CMD}`;
代替
result=`${ECHO_CMD}`;
没有评估
${ECHO_TEXT} | awk -F' ' '{print \$1}
这将扩展到
Echo this | awk -F' ' '{print \$1}
将被视为echo的参数,并将逐字输出.使用eval实际运行该行.