gpt4 book ai didi

bash - 在 bash 中进行命令分组的正确方法是什么

转载 作者:行者123 更新时间:2023-11-29 09:25:10 26 4
gpt4 key购买 nike

我想在一个条件之后对一些 bash 指令进行分组:

第一次尝试:

$ [[ 0 == 1 ]] && echo 1; echo 2
2

第二次尝试:

$ [[ 0 == 1 ]] && (echo 1; echo 2)
$ [[ 0 == 0 ]] && (echo 1; echo 2)
1
2

所以后者才是我想要的。

问题:这是我第一次在 bash 中使用 (...) 语法。 (...) 是正确的方法吗,还是它有一些我可能遗漏的副作用?

最佳答案

() 中放置命令 创建一个子 shell,在其中执行分组的命令。这意味着在子 shell 中对变量所做的任何更改都会保留在子 shell 中,例如

$ n=5; [[ "$n" == "5" ]] && ( ((n++)); echo $n); echo $n
6
5

相反,您希望使用不调用子 shell 的 {} 进行分组。那么输出将是

$ n=5; [[ "$n" == "5" ]] && { ((n++)); echo $n; }; echo $n
6
6

还要注意 {} 和分号内部的空格:{ ((n++)); echo $n; };.

关于bash - 在 bash 中进行命令分组的正确方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46092962/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com