1

我有以下打印我当前 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

我怎样才能做到这一点?

4

1 回答 1

3

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

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

在测试时,我发现了一些不一致的地方-n-z我会跟进。尝试这个:

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

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

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

或者

set result (get_ip)
test -n "$result"; and echo Y; or echo N
于 2014-04-22T17:58:18.483 回答