Linux 如何在bash脚本中逐个运行查询并仅返回退出代码?
我创建了以下脚本:-Linux 如何在bash脚本中逐个运行查询并仅返回退出代码?,linux,bash,Linux,Bash,我创建了以下脚本:- query1=$(command1) query2=$(command2) query3=$(command3) if [ $? -eq 0] then echo "Success" exit 0 else echo "Failed" exit fi 问题是,当我运行脚本时,它将执行查询(全部3个查询),并且只返回第3个查询的结果 如何逐1运行查询,而不显示查询的输出,只显示退出代码并移动到下一个查询 希望足够清楚,我是linux脚本新手
query1=$(command1)
query2=$(command2)
query3=$(command3)
if [ $? -eq 0]
then
echo "Success"
exit 0
else
echo "Failed"
exit
fi
问题是,当我运行脚本时,它将执行查询(全部3个查询),并且只返回第3个查询的结果
如何逐1运行查询,而不显示查询的输出,只显示退出代码并移动到下一个查询
希望足够清楚,我是linux脚本新手
如何在不显示查询输出的情况下逐个运行查询,
只需输入退出代码并转到下一个查询
要每次运行一个命令,处理其标准输出,但显示每个命令的退出代码,请执行以下操作:
command1 >/dev/null; echo "command1 code=$?"
command2 >/dev/null; echo "command2 code=$?"
command3 >/dev/null; echo "command3 code=$?"
使用if
命令
一个问题:如果,比如说,
command2
失败了,您还是要执行command3
,还是要立即失败
如果希望执行所有命令,则必须在每个命令后存储返回代码,如下所示:
query1=$(command1)
RC1=$?
query2=$(command2)
RC2=$?
query3=$(command3)
RC3=$?
if [[ "$RC1" != "0" || "$RC2" != "0" || "$RC3" != "0" ]]; then
echo "Fail"
exit 1
else
echo "Success"
exit 0
fi
然后您必须测试所有这些,例如:
query1=$(command1)
RC1=$?
query2=$(command2)
RC2=$?
query3=$(command3)
RC3=$?
if [[ "$RC1" != "0" || "$RC2" != "0" || "$RC3" != "0" ]]; then
echo "Fail"
exit 1
else
echo "Success"
exit 0
fi
如果不想使用返回代码,也可以在其中一个失败时存储:
FAIL=""
query1=$(command1) || FAIL="yes"
query2=$(command2) || FAIL="yes"
query3=$(command3) || FAIL="yes"
if [[ -z $FAIL ]]; then
echo "Success"
exit 0
else
echo "Fail"
exit 1
fi
但是,如果您只需要在第一个失败之前执行,事情就会变得简单:
#!/usr/bin/env bash
while true; do
query1=$(command1) || break
query2=$(command2) || break
query3=$(command3) || break
echo "Success"
exit 0
done
echo "Fail"
exit 1
或者更容易:
(query1=$(command1) && \
query2=$(command2) && \
query3=$(command3) && \
echo "Success") || \
(echo "Fail" && exit 1)
@如果更新后的答案有一个使用
if
命令测试命令返回代码的示例。执行命令1后if
命令是否移动到下一个命令?@Asif我们可以进行各种变化。你希望发生什么?我希望执行所有命令,带有错误或超时退出代码的命令将向我发送电子邮件。另一个问题是命令保持执行并显示输出。我实际上希望执行所有命令,如果返回错误或超时,每个命令将向我发送警报电子邮件…因此我认为第一个1工作得更好..我遇到的另一个问题是有另一种存储命令的方法,因为它保持执行并显示输出(我只想获取返回代码以在另一个命令中使用)。在我的所有程序中,命令的输出将存储在查询
变量中。您的意思是将其存储在文件中吗?我想将其作为变量存储在查询变量中。$(curl-v-X POST-d“UID=GG_test&PP=2222”http:weblls.ashx)
这是我的变量内容,可能与其相关。要执行curl
命令吗?