我正在执行一个包含一个 curl 命令的 shell 脚本。我必须将 curl 命令的输出(xml 格式)存储在一个文件中,并在屏幕上显示结果。为此,在使用管道的 curl 之后使用“tee 命令”。我需要检查 curl 命令是否执行成功。我使用了 $? 但它获取的是 tee 命令的退出状态。我使用了 PIPESTATUS[0] 并设置了 -o pipefail,但对 curl 不起作用。如何检查 curl 命令是否执行成功?如何将 curl 命令的退出状态存储在变量中?这只是一个演示代码。
curl output | tee -a filename
我想知道 curl 的退出状态
答案1
使用 $PIPESTATUS 变量,它是一个数组。下面将为您提供管道命令的返回代码。
curl output | tee -a filename
echo ${PIPESTATUS[0]}
答案2
您可以使用以下构造:
content=`curl http://www.google.com`
if [[ $? -ne 0 ]]; then
# do some fail stuff
else
echo '$content' | tee /tmp/output.file
fi
它将 curl 的输出存储在一个变量中,然后检查退出状态,如果成功,则将输出发送到文件(和标准输出)。