gpt4 book ai didi

linux - Bash 命令在 cmd 行上有效,但在脚本中无效

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:12:14 24 4
gpt4 key购买 nike

我有一组在命令行上运行的管道命令,但在脚本中运行时不会产生输出。

命令是:

STRNG=$( ip mroute show | tr -d "()," | awk ' {print "/usr/sbin/smcroute -a eth3", $1, $2, "vtun0 vtun1"}' ); echo "$STRNG"`

输出是:

/usr/sbin/smcroute -a eth3 192.0.1.19 224.1.1.1 vtun0 vtun1
/usr/sbin/smcroute -a eth3 192.0.1.18 224.1.1.1 vtun0 vtun1

但是,如果我将完全相同的命令行放入脚本中,我将不会从 echo "$STRNG" 命令中获得任何输出。

我想做的是将 $STRNG 中的每一行作为命令执行,但无论出于何种原因,它似乎在 $STRNG 中不包含任何文本脚本,而 $STRNG 从命令行运行时确实包含文本。我确定这是由于对 bash 的理解有限。

有人可以帮我吗?

最佳答案

您管道中的命令之一是别名吗?如果是这样,你需要做

shopt -s expand_aliases

为了让 bash 在你的脚本中扩展它....通常这只能由交互式 shell 中的默认值。

关于linux - Bash 命令在 cmd 行上有效,但在脚本中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3302761/

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