在 Linux shell 脚本中,如果第一个条件为真,则如何执行第二个条件

在 Linux shell 脚本中,如果第一个条件为真,则如何执行第二个条件

我有一个if条件。如果该条件为真,则将运行一个脚本,之后我需要检查另一个条件。

我如何使用if语句或其他方式来做到这一点?

例如,

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

答案1

如果第一个条件为真,如何执行第二个条件

您的代码需要具有以下结构:

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" ]

事宜

答案3

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

我根据自己的知识编写了这个脚本。如果有任何错误,请提出建议。其中 kb_startup、kb_shutdown 和 appl_monitor 是 /bin 中定义的程序

相关内容