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
命令吗?