shellcript中的反引号问题

前端之家收集整理的这篇文章主要介绍了shellcript中的反引号问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在使用反引号使 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才能使其正常工作
result=`eval ${ECHO_CMD}`;

代替

result=`${ECHO_CMD}`;

没有评估

${ECHO_TEXT} | awk -F' ' '{print \$1}

这将扩展到

Echo this | awk -F' ' '{print \$1}

将被视为echo的参数,并将逐字输出.使用eval实际运行该行.

原文链接:https://www.f2er.com/bash/385086.html

猜你在找的Bash相关文章