我可以正常运行这个命令,输出我想要的:

ifconfig eth0 | grep HWaddr | awk '{print $5}'

但是,当我将命令设置为变量并打印该变量时,出现错误:
CASS_INTERNAL=`ifconfig eth0 | grep HWaddr | awk '{print \$5}'`
$CASS_INTERNAL
my internal xxx ip: command not found
奇怪的事情 - 我的内部 IP 居然出现了。我该如何处理而不会出错?没关系,但我使用的是最新版本的 Ubuntu。

最佳答案

好吧,您首先要搜索 HWaddr,因此这一行的第五个字段是相关网络适配器的 MAC 地址,而不是您的本地 IP 地址。

其他人建议解决方案是简单地回显结果,这意味着如果此示例中的 eth0 在该行执行的那个时间点不可用,则它将不起作用。

据我了解,您希望将所需的命令行放在一个变量中,然后稍后对其进行评估。这种模式通常称为 惰性求值 ,并通过使用 eval 内置函数生成 possible in bash :

#put the desired command in variable
CASS_INTERNAL='ifconfig eth0 | grep HWaddr | awk "{print \$5}"'

# ....

#at later on - evaluate its contents!
eval $CASS_INTERNAL
11:22:33:aa:bb:cc

关于Bash 脚本问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3294909/

10-16 18:14