And*_*alj 1 linux error-handling bash scripting
我正在编写一个 Bash 脚本来安装一些软件;有没有一种方法可以创建一个在 OR 之后执行多个命令的单行代码?基本上,我想要做的错误检查是这样的:
sudo apt-get install fortune || (echo "Installation failed" ; exit)
echo "Installation successful"
Run Code Online (Sandbox Code Playgroud)
我已经尝试过了,但安装失败时它不会退出脚本,并且仍然输出“安装成功”。关于如何编辑此方法以使其发挥作用有什么想法吗?
括号创建一个子 shell,这是exit命令退出的内容。您需要一个用大括号定义的命令组。
sudo apt-get install fortune || { echo "Installation failed" >&2; exit 1; }
Run Code Online (Sandbox Code Playgroud)
(请注意最后一个分号和大括号周围的空格;所有这些都很重要。)
为了使内容更具可读性,通常您定义一个函数来充当以下单个命令||:
abort () { echo "Installation of $1 failed" >&2; exit 1; }
sudo apt-get install fortune || abort fortune
Run Code Online (Sandbox Code Playgroud)