如何在Linux shell脚本中使用反引号输入grep?

时间:2018-05-22 14:57:05

标签: sh

我正在尝试执行,我认为是一个脚本中的简单shell命令。当我从命令提示符执行此操作时,它运行良好:

$ sudo cat /etc/sysconfig/network-scripts/ifcfg-en0 | grep "IPADDR"
IPADDR=192.168.1.10

但是,如果我把它放到shell脚本中:

#!/usr/bin/sh
my_command=`sudo cat /etc/sysconfig/network-scripts/ifcfg-en0 | grep "IPADDR"`
${my_command}
echo $?

我收到此错误:

$ sudo ./myscript.sh
./myscript.sh: line 3: IPADDR=192.168.1.10: command not found

那么,我怎样才能在shell脚本中成功执行这一行?

谢谢!

1 个答案:

答案 0 :(得分:1)

您的案例中的问题是您正在执行命令的结果......

这一行在"``"之间执行代码。这是用于执行给定字符串作为命令的特殊字符:

my_command=`sudo cat /etc/sysconfig/network-scripts/ifcfg-en0 | grep "IPADDR"`

因此,$my_command是" IPADDR=192.168.1.10"

然后你试图第二次执行它:

${my_command}

这就是为什么你收到这个错误。没有" IPADDR=192.168.1.10"。

这样的命令

只需使用$my_command作为包含所需grepped部分的结果,然后跳过${my_command}行:

#!/usr/bin/sh
my_command=`sudo cat /etc/sysconfig/network-scripts/ifcfg-en0 | grep "IPADDR"`
echo $my_command