gpt4 book ai didi

bash - 带有管道的变量中的命令

转载 作者:行者123 更新时间:2023-12-05 02:26:29 24 4
gpt4 key购买 nike

有人可以解释为什么 AB 的行为不同吗?

A=`echo hello how are you | wc -w`

CMD="echo hello how are you | wc -w"
B=`$CMD`

他们给出不同的结果:

$echo $A
4

$echo $B
hello how are you | wc -w

我想要的是一个变量中的命令,我可以在脚本的多个点执行该命令并获取不同的值进行比较。它过去工作正常,但如果命令有管道,它就不起作用。

最佳答案

  • ``(即反引号)或 $() 在 bash 中称为命令替换
  • "" - 例如使用保留字符的字面值,即数据。
  1. 在您的第一个示例中,命令 echo hello how are you | wc -w 被执行并将其值 4 分配给 A,因此你得到 4

  2. 在您的第二个示例中,它是一个字符串赋值给变量 B 并且通过 `$CMD` | 是未“评估”因为后期分词(有关详细信息,请参阅 here),您会得到 hello how are you | wc -w.

您可以使用 eval 命令完成您需要的操作,如下所示:

CMD="echo hello how are you | wc -w"
echo `eval $CMD` # or just eval "$CMD"
# Output is 4

关于bash - 带有管道的变量中的命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73758446/

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