检查鱼功能的空输出

时间:2014-04-22 17:20:23

标签: fish

我有以下功能打印我当前的IP:

function get_ip
  echo -n -s (ifconfig en1 | grep inet | grep -v inet6 | awk '{print $2}')
end

$ get_ip
192.168.1.4~

如果offline没有返回任何内容(我打印""当我离线时),我期待打印get_ip

我试过了:

if get_ip
  echo "Yes"
else
  echo "No"
end

但它始终返回Yes

我该如何做到这一点?

1 个答案:

答案 0 :(得分:3)

您需要检查测试内置的退出状态。

if test -n (get_ip) 
    echo Yes
else
    echo No
end

在测试过程中,我发现-n-z之间存在一些不一致的情况,我会跟进。试试这个:

if test -z (get_ip) 
    echo No
else
    echo Yes
end

根据鱼类维护者的this answer,即使第二个有效,两个答案都是错误的。使用

count (get_ip); and echo Y; or echo N

set result (get_ip)
test -n "$result"; and echo Y; or echo N