Como executar uma segunda condição se a primeira condição for verdadeira no shell script do Linux

3

Eu tenho uma condição if . Se essa condição for verdadeira, um script será executado e, depois disso, preciso verificar outra condição.

Como posso fazer isso usando uma declaração if ou outra coisa?

Por exemplo,

 if [ condition -eq o ]
 then
 run script
 again condition(this condition depends on above script output value)
 run another script
 else
 exit
    
por bunny 03.09.2015 / 19:02

3 respostas

6

Como executar a segunda condição se a primeira condição for verdadeira

Seu código precisa ter a seguinte estrutura:

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

SYNTAX

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

The test-commands list is executed, and if its return status is zero, the consequent-commands list is executed.

If test-commands returns a non-zero status, each elif list is executed in turn, and if its exit status is zero, the corresponding more-consequents is executed and the command completes.

If else alternate-consequents is present, and the final command in the final if or elif clause has a non-zero exit status, then alternate-consequents is executed.

The return status is the exit status of the last command executed, or zero if no condition tested true.

Veja abaixo um link com exemplos.

Leitura Adicional

por 03.09.2015 / 19:08
2

Parece que

first-condition && consequences1

Seguido por:

(novamente)

first-condition && second-condition && consequences2

Isso pode ser alterado para if;then;fi inserindo um if secundário no original:

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

Portanto, o seu problema consequences2 NÃO é "else". O aninhamento é divertido.

Se a sua segunda condição é simplesmente baseada na saída de consequências1, você pode executá-la no teste do segundo if :

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

Deve adoçar seu pote . Basta lembrar que QUALQUER COISA pode ser executada em um teste; somente o código de retorno do último comando (ou a saída no stdio), mas você precisará testar algo então: como

[ "'consequences1'" == "allok" ]

importa

    
por 03.09.2015 / 19:40
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 " [email protected]
else
echo " Warning KB app is not running
       $(ls -ltr | Appli_Monitor | echo $?) | mailx -s "KB App " [email protected]
fi
fi
fi
fi

Com o meu conhecimento eu fiz este script. Se houver algum erro, dê sugestões. onde kb_startup, kb_shutdown e appl_monitor são programas que são definidos em / bin

    
por 04.09.2015 / 19:37