7

我正在为我的终端制作一些别名以输出不同的IP地址。其中三分之二工作正常,但我的默认网关不会返回干净的响应。

别名inet=“hostname-I | awk'{print$3}'”

返回:192.168.xxx.xx如期

别名pubip=“curl ifconfig.me”

返回:354. xxx.xx.xx如期

但是,我使用的别名返回默认网关ip

别名def=“ip r | grep default | awk'{print$3}”

返回:通过192.168.xxx违约。xxx dev eth0

我在终端中使用相同的行,它将按照预期返回默认网关。

但是当它被存储为别名时,脚本的“awk”部分就不起作用了。

我可以在别名中不使用管道两次吗?我的代码中还有其他错误吗?

新撰稿人
JakobyScream是本网站的新贡献者。在要求澄清、评论和回答时要小心。看看我们的行为准则
    14

    在别名定义中,$3实际上是在定义别名时展开的(尽管乍一看并不是这样)。如果你打字别名定义别名(查看已定义的别名)后,您将看到您的别名实际上具有

    别名def=' IP r | grep default | awk '\ " {print}'\ " '

    因为打印独自一人在awk,返回的整行格雷普是印刷的。

    使用以下命令定义别名:

    别名def="ip r | grep default | awk '{print \$3}'"

    然后,您的别名将具有以下格式:

    别名def='ip r | grep default | awk'\''''''''{print$3}'\'''

    它会像你想的那样工作。

    3.
    • 非常感谢你。完整的解释很好,我不确定我是否需要逃避一些角色或什么,但是的,它现在按照预期工作。祝你今天愉快
      - - - - - -JakobyScream
      两天前
    • 4
      您还可以消除grep:别名def="ip r | awk '/default/ {print \$3}'"
      - - - - - -mpez0
      昨天
    • 3.
      您还可以定义一个函数而不是别名,而不必担心这些。
      - - - - - -巴尔马
      昨天

    你的回答

    JakobyScream是一个新的贡献者。友好点,看看我们的的行为准则

    点击“发布你的答案”,即表示你同意我们的服务条款隐私政策饼干的政策

    不是你想要的答案?浏览其他带标签的问题问你自己的问题