首页 > 解决方案 > 在 OR 之后执行多个 Bash 命令

问题描述

我正在编写一个 Bash 脚本来安装一些软件;有没有办法创建一个在 OR 之后执行多个命令的单行程序?基本上,我想做的错误检查是这样的:

sudo apt-get install fortune || (echo "Installation failed" ; exit)
echo "Installation successful"

我试过这个,但是安装失败时它不会退出脚本,并且仍然输出“安装成功”。关于如何编辑此方法以使其工作的任何想法?

标签: linuxbasherror-handlingscripting

解决方案


括号创建一个子shell,这是exit命令退出的地方。您需要一个用大括号定义的命令

sudo apt-get install fortune || { echo "Installation failed" >&2; exit 1; }

(注意最后一个分号和大括号周围的空格;所有这些都很重要。)

为了使事情更具可读性,通常您定义一个函数来充当以下单个命令||

abort () { echo "Installation of $1 failed" >&2; exit 1; }

sudo apt-get install fortune || abort fortune

推荐阅读