我想在条件之后对一些 bash 指令进行分组:
第一次尝试:
$ [[ 0 == 1 ]] && echo 1; echo 2
2
Run Code Online (Sandbox Code Playgroud)
第二次尝试:
$ [[ 0 == 1 ]] && (echo 1; echo 2)
$ [[ 0 == 0 ]] && (echo 1; echo 2)
1
2
Run Code Online (Sandbox Code Playgroud)
所以后者是我想要的。
问题:这是我第一次在 bash 中使用(...)语法。是(......)正确的方法,还是我可能会遗漏一些副作用?
将命令放入() 创建一个子shell,在其中执行分组的命令。这意味着在 subshell 中对变量所做的任何更改,都保留在 subshell 中,例如
$ n=5; [[ "$n" == "5" ]] && ( ((n++)); echo $n); echo $n
6
5
Run Code Online (Sandbox Code Playgroud)
相反,您希望与{}哪个不调用子shell分组。然后输出将是
$ n=5; [[ "$n" == "5" ]] && { ((n++)); echo $n; }; echo $n
6
6
Run Code Online (Sandbox Code Playgroud)
还要注意里面的空格{}和分号:{ ((n++)); echo $n; };.
| 归档时间: |
|
| 查看次数: |
1330 次 |
| 最近记录: |