如何禁止在调用某些命令后停止 bash 脚本的执行?

如何禁止在调用某些命令后停止 bash 脚本的执行?

我正在尝试创建一个 bash 脚本来部署应用程序。在部署之前,必须使用 Maven 构建应用程序。问题是,一旦 Maven 构建完成,下一个命令就永远不会被调用。看起来 Maven 发出了一些信号来终止任何进一步的执行。

例如,在以下脚本中,Hello world永远不会写入标准输出。

#!/bin/sh

exec mvn -DskipTests -Darguments=-DskipTests clean install

echo "Hello world"

有没有办法绕过这个限制?

答案1

exec只需从调用 Maven 的命令行中删除 即可。

exec命令将 shell 替换为正在执行的命令,因此 shell 不再存在,并且不会执行该行之后的任何内容(好吧,除非启动该命令失败。)

如果您想要 shell,请不要用于exec生成外部命令。

相关内容