linux - 如果命令失败如何退出?

标签 linux bash exit exitstatus

我是 shell 脚本的菜鸟。如果命令失败,我想打印一条消息并退出我的脚本。我试过了:

my_command && (echo 'my_command failed; exit)

但它不起作用。它继续执行脚本中此行之后的指令。我正在使用 Ubuntu 和 bash。

最佳答案

试试:

my_command || { echo 'my_command failed' ; exit 1; }

四个变化:

  • && 更改为 ||
  • 使用 { } 代替 ( )
  • exit
  • 之后引入;
  • { 之后和 }
  • 之前的空格

由于您只想在命令失败时打印消息并退出(以非零值退出),因此您需要 || 而不是 &&

cmd1 && cmd2

将在 cmd1 成功时运行 cmd2(退出值 0)。在哪里

cmd1 || cmd2

将在 cmd1 失败时运行 cmd2(退出值非零)。

使用 ( ) 使它们内部的命令在 sub-shell 中运行,并从中调用 exit那里会导致您退出子 shell 而不是原来的 shell,因此在原来的 shell 中继续执行。

要克服这个问题,请使用 { }

最后两项更改是 bash 要求的。

关于linux - 如果命令失败如何退出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3822621/

相关文章:

linux - 仅尾部一行的前几个字符

c - 在 valgrind 下运行时,setrlimit 失败并显示不允许操作

bash - 在 Bash 中的命令之前设置环境变量不适用于管道中的第二个命令

linux - 排序范围 Linux

python - 如何正确处理 SIGINT 以关闭文件/连接

java - 如何检测用户是否通过红十字关闭窗口?

macOS:有什么方法可以知道用户何时尝试通过 Dock 图标退出应用程序?

linux - 使用 vim 复制一个文件的内容并将其插入到另一个文件的特定行中

java - linux/mac下用eclipse查询tomcat

c - 在 GPIO 上使用 GPS PPS 在嵌入式 Linux 中设置系统时间