有时我经常连续调用两个命令。然而,第二个命令只有在第一个命令成功的情况下才有意义。
我想做这样的事情:
#!/bin/bash
if [ $? -gt 0 ]
then
echo "WARNING: previous command entered at the shell prompt failed"
fi
但它不起作用:
t@quad:~$ echo "abc" | grep def
t@quad:~$ ./warnme.sh
Last command succeeded
我想要的是这样的:
t@quad:~$ echo "abc" | grep def
t@quad:~$ echo ${PIPESTATUS[1]}
1
我们可以清楚地看到最后一个命令失败了。
我想要的结果:
t@quad:~$ echo "abc" | grep def
t@quad:~$ ./warnme.sh
WARNING: previous command entered at the shell prompt failed
我找不到办法。
最佳答案
command1 && command2
完全按照您的意愿行事:仅当命令 1 成功时,命令 2 才会执行。例如你可以这样做:
ls a.out && ./a.out
然后 a.out 只有在可以列出时才会执行。我在 http://www.linuxintro.org/wiki/%26%26 上写了关于这个的维基博客。
关于linux - 如何在 shell 脚本中获取最后一个 Bash shell 命令的成功状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21467624/