3

У меня есть условие if . Если это условие истинно, тогда будет запущен один скрипт, и после этого мне нужно проверить другое условие.

Как я могу сделать это, используя оператор if или что-то еще?

Например,

 if [ condition -eq o ]
 then
 run script
 again condition(this condition depends on above script output value)
 run another script
 else
 exit

3 ответа3

6

Как выполнить второе условие, если первое условие истинно

Ваш код должен иметь следующую структуру:

if [condition -ne 0]
then 
  do_something 
  if [expression that depends on exit status of do_something]
  then 
    do something_else 
  fi 
fi

СИНТАКСИС

if test-commands; then
  consequent-commands;
[elif more-test-commands; then
   more-consequents;]
[else alternate-consequents;]
fi

test-commands список тестовых команд , и если его возвращаемый статус равен нулю, выполняется список consequent-commands .

Если test-commands возвращают ненулевой статус, каждый список elif выполняется по очереди, а если его статус выхода равен нулю, соответствующие соответствующие more-consequents выполняются, и команда завершается.

Если есть else alternate-consequents , и последняя команда в последнем предложении if или elif имеет ненулевой статус выхода, то выполняется alternate-consequents .

Статус возврата - это статус выхода последней выполненной команды или ноль, если ни одно из условий не проверено как истинное.

Ниже приведена ссылка с примерами.


Дальнейшее чтение

2

Это звучит как

first-condition && consequences1

С последующим:

(снова)

first-condition && second-condition && consequences2

Это можно изменить на if;then;fi , вставив вторичную if в оригинал:

if [ first-condition ]; then
   consequences1
   if [ second-condition ]; then # Because first-condition is already true here
      consequences2
   fi
fi

Таким образом, ваши consequences2 не являются проблемой "еще" :) Вложение это весело.

Если ваше второе условие просто основано на выводе последствия1, вы можете запустить его в тесте второго, if:

if [ first-condition ]; then
  if [ consequences1-test ]; then
    consequences2
  fi
 fi

Это должно подсластить твой горшок. Просто помните, что НИЧЕГО можно запустить в тесте; только код возврата последней команды (или вывод на stdio), но тогда вам нужно будет что-то проверить:

[ "`consequences1`" == "allok" ]

вопросы

0
cd lock
if [ $(ls -ltr | grep -q exitup) -eq 0 ]; then
rm exitup
if [ $(Appl_Monitor | echo $?) -ne 110 ]; then
kb_shutdown
kb_startup
if [ $(ls -ltr | grep -q exitup) - eq 0 ]; then
rm exitup
if [ $(Appl_Monitor | echo $?) -eq 110 ]; then
echo " kb app is fine
       $(ls -ltr | Appli_Monitor | echo $?) | mailx -s "KB App " abc@gmail.com
else
echo " Warning KB app is not running
       $(ls -ltr | Appli_Monitor | echo $?) | mailx -s "KB App " abc@gmail.com
fi
fi
fi
fi

С моим знанием я сделал этот сценарий. Если есть ошибки, дайте предложения. где kb_startup, kb_shutdown и appl_monitor - программы, которые находятся в /bin

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .