\u0026\u0026和|之间有什么区别?在bash脚本?

让我们在下面的两行给出两个不同的结果.

p=$(cd ~ && pwd) ; echo $p
p=$(cd ~ |  pwd) ; echo $p

这两者有何不同?

最佳答案
在p = $(cd~&& pwd)中:

>命令替换$()在子shell中运行
> cd~将目录更改为〜(你的家),如果cd成功(&&)然后pwd在STDOUT上打印目录名,因此保存在p上的字符串将是你的主目录,例如/家/ foobar的

在p = $(cd~ | pwd)中:

>再次$()产生一个子shell
> |两侧的命令在相应的子壳中运行(两者同时开始)
>所以cd~在子shell中完成,并在一个单独的子shell中进行pwd
>所以你只能从pwd获得STDOUT,即从你运行命令的地方获得,这可以是你想象的任何目录,因此p将包含调用命令的目录名,而不是你的主目录

转载注明原文:\u0026\u0026和|之间有什么区别?在bash脚本? - 代码日志