代码之家  ›  专栏  ›  技术社区  ›  Brian

如何在LinuxShell脚本中使用backticks来导入grep?

sh
  •  0
  • Brian  · 技术社区  · 8 年前

    我试图在脚本中执行一个简单的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 回复  |  直到 8 年前
        1
  •  1
  •   Flash Thunder    8 年前

    你的问题是你正在执行命令的结果。。。

    这一行在“`”之间执行代码,这些字符是作为命令执行给定字符串的特殊字符:

    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_命令 因此,包含所需的灰色部分并跳过 ${my_command} 行:

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