我创建了以下脚本: -
query1=$(command1)
query2=$(command2)
query3=$(command3)
if [ $? -eq 0]
then
echo "Success"
exit 0
else
echo "Failed"
exit
fi
问题是当我运行脚本时,它会执行查询(全3查询)并只返回第3个查询的结果
如何在不显示查询输出的情况下逐个运行查询,只显示退出代码并转到下一个查询?
希望足够清楚,我是Linux脚本的新手。
答案 0 :(得分:0)
如何在不显示查询输出的情况下逐个运行查询, 只是退出代码并转到下一个查询?
要一次运行一个命令,处理它们的标准输出,但显示每个命令的退出代码:
command1 >/dev/null; echo "command1 code=$?"
command2 >/dev/null; echo "command2 code=$?"
command3 >/dev/null; echo "command3 code=$?"
if
命令if command1 >/dev/null
then
echo Success
else
echo Fail
fi
答案 1 :(得分:0)
一个问题:如果{,1}}失败了,你是否想要执行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
但是如果你只需要执行直到第一个失败,事情会变得更容易:
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