сценарий оболочки + $? как глухой 1 в начале - PullRequest
0 голосов
/ 02 сентября 2010

У меня есть следующее (часть большого сценария ksh)

 while [[ $? -ne 0 ]]
  do

    print -n "ENTER VALID HOST IP"
     read IP
     CHECK_IP $IP   # CHECK_IP is afuntion that check if IP is valid and return 0 or 1
     done

как мы видим в то время как $? всегда равно 0 поэтому мы не можем попросить IP

цель цикла - запросить IP-адрес и активируйте функцию CHECK_IP для возврата 0 или 1

0 для действующего IP

1 для BAD IP

но, как я уже говорил, я никогда не спрашивал об IP, потому что $? всегда 0 (после "while")

так мой вопрос

Как включить значение по умолчанию от 1 до $? так я начну цикл, или другое предложение?

lidai

Ответы [ 2 ]

2 голосов
/ 02 сентября 2010

Выполнить false сначала.

0 голосов
/ 02 сентября 2010

$? является статусом выхода предыдущей выполненной команды. Никто не может гарантировать, что $? всегда возвращать 0.

Ваш код выше говорит, что «при возникновении некоторой ошибки повторите». Другими словами, $? -ne 0 защитит / обеспечит остановку вашего цикла при успешном выполнении какой-либо команды.

Я не знаю, в чем именно твое дело. Но я думаю, у вас есть несколько IP-адресов, многие из которых неверны. Сам цикл проверит эти IP-адреса и завершит работу, когда IP-адрес правильный.

Самый большой вопрос - сможет ли ваш код когда-либо войти в цикл. В этом случае использование while-do само по себе некорректно. Попробуйте вместо этого сделать do-while (я не знаю, доступно ли это в вашей оболочке или нет). Используя do-while, вы будете уверены, что ваш код будет введен в цикл как минимум 1 раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...