V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
mingtdlb
V2EX  ›  问与答

请教一个 shell 的问题

  •  
  •   mingtdlb · 2021-11-14 22:18:08 +08:00 · 754 次点击
    这是一个创建于 865 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前提 80 端口未监听

    #!/bin/bash
    #set -e
    port_status=$(ss -lnt | grep -c 80)
    echo ${port_status}
    

    输出 0

    #!/bin/bash
    set -e
    port_status=$(ss -lnt | grep -c 80)
    echo ${port_status}
    

    什么也不输出

    set -e 不是有错误则退出呀?第二个有错误吗?

    4 条回复    2021-11-15 15:11:14 +08:00
    lululau
        1
    lululau  
       2021-11-14 22:27:17 +08:00
    man grep | col -b | grep -A5 'EXIT STATUS'
    albertofwb
        2
    albertofwb  
       2021-11-14 23:52:15 +08:00 via Android   ❤️ 1
    因为你 group 没有搜索的东西,bash 返回值非零。启用了 set -e 所以脚本在这一行就停止了,不会在执行下面的 echo
    freelancher
        3
    freelancher  
       2021-11-15 15:00:35 +08:00   ❤️ 1
    set -e 是指若指令传回值不等于 0 ,则立即退出 shell 。 这里的 0 是指状态的 0 。不是返回值的 0 。明白了么?没啥必要就不要加了。
    freelancher
        4
    freelancher  
       2021-11-15 15:11:14 +08:00
    此 0 非彼 0 。着重理解就好了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5218 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 07:20 · PVG 15:20 · LAX 00:20 · JFK 03:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.