linux - `exit` 括号内不退出脚本

标签 linux bash

这是一个简单的问题。为什么这不像我想的那样:

(echo "Test 1"; exit) && echo "Test 2"

……或者……

VAR1=1
VAR2=2
[ $VAR1 == $VAR2 ] || (echo '$VAR1 does not equal $VAR2, exiting.'; exit)
echo -e 'Well, I\'m still alive yo!'

尽管有明确的 exit 命令,运行这两个片段中的任何一个都会导致脚本继续执行。

显然括号出于某种原因影响了命令,我的问题是为什么?

最佳答案

括号在子 shell 中执行它们的内容,因此退出的是子 shell。

您通常可以使用另一个 && 或使用 {} 代替 () 来达到相同的效果。

{ echo "Test 1"; exit; } && echo "Test 2"

或者

echo "Test 1" && exit && echo "Test 2"

关于linux - `exit` 括号内不退出脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19886797/

相关文章:

linux - 如何通过导入将图像发送到程序而不是保存它?

Bash One Liner : copy template_*. txt 到 foo_*.txt?

bash - 根据文件中的键值对设置环境变量,其中一些值是带引号的表达式

c - 可加载内核模块编程和系统调用拦截

linux - Unix - 没有读取访问权限的执行访问示例?

bash - 使用ssh将变量发送到远程服务器

bash - 当其中一个子进程退出时退出 bash 脚本

python - 使用 Python/iptables 拦截通过 Linux Bridge 的 UDP 数据包

linux - Tee 命令基本行为

linux - 具有不同子网的多个 NIC 卡