我有以下功能打印我当前的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
。
我该如何做到这一点?
答案 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