gpt4 book ai didi

shell - shell 脚本中的反引号问题

转载 作者:行者123 更新时间:2023-12-04 03:17:24 24 4
gpt4 key购买 nike

我在使用反引号使 shellscript 工作时遇到问题。这是我遇到问题的脚本的示例版本:

#!/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}`;

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

这将扩展到
Echo this | awk -F' ' '{print \$1}

将被视为 echo 的参数并将逐字输出。与 eval该行将实际运行。

关于shell - shell 脚本中的反引号问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3927062/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com