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

テストビルトインの終了ステータスを確認する必要があります。

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

-nテスト中に、 と の間に矛盾があることがわかりまし-zた。これを試して:

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

魚のメンテナーからのこの回答によると、2番目の回答は機能しますが、両方の回答が間違っています。どちらかを使用

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 に答える