我读过关于 && 和 || 我想在错误的情况下运行两个命令。
我已经尝试过;
,但它总是在运行。我试过把它放在花括号里{ command1; command2 }
,但这会导致语法错误。
我想做类似的事情
command && echo "Ok, continuing" || echo "Check internet connection"; exit 1
只有在没有 Internet 连接时才会退出。
我读过关于 && 和 || 我想在错误的情况下运行两个命令。
我已经尝试过;
,但它总是在运行。我试过把它放在花括号里{ command1; command2 }
,但这会导致语法错误。
我想做类似的事情
command && echo "Ok, continuing" || echo "Check internet connection"; exit 1
只有在没有 Internet 连接时才会退出。
使用括号将命令放在一个子shell 中,这并不总是您想要的。或者,使用花括号:
这里的诀窍是,与括号不同,大括号中的最终命令必须跟在
;
.为什么需要分号或换行符
花括号是命令的有效参数。例如,这是一个大括号作为 的参数
echo
:因此,如果 shell 看到:
shell 将 command1 解释为没有参数,将 command2 解释为有一个由字符组成的参数
}
。大括号}
仅在分号或换行符之后才被解释为关闭分组。要使上述工作:{...}
子壳和和之间的区别(...)
请注意以下设置
x
为 10,但在echo
命令运行之前忘记了该设置:相比之下,使用花括号时,
x=10
会记住 的设置:不同之处在于子shell 中的变量分配在子shell 完成后不会继续存在。
文档
来自
man bash
: