1

为什么单引号和双引号在“ bash -c”中的工作方式不同?

在运行外壳程序脚本之前使用bash -c选项生成新外壳程序时,
我遇到了意外的动作。

当我使用single quotes ,会生成新的shell以运行脚本。

 $ bash -c 'echo pid is $$' pid is 53465 $ bash -c 'echo pid is $$' pid is 53466 $ bash -c 'echo pid is $$' pid is 53477

但是double quotes没有。

 $ bash -c "echo pid is $$" pid is 2426 $ bash -c "echo pid is $$" pid is 2426 $ bash -c "echo pid is $$" pid is 2426

我仔细阅读了类似的问题bash手册,但找不到原因。
有人知道原因吗?

已提交 December 09th 2020 通過 Admin

答案
0

因此,当您执行命令时

$ command "echo pid is $$"

双引号确保命令command在完成所有替换后传递一个字符串。因此,假设交互式外壳的pid为1234。

 $ command "echo pid is 1234"

当使用单引号时,命令将传递字符串echo pid is $$ ,其中$$与任何字符串一样。如果命令现在是bash ,则$$具有特殊含义

$ bash -c 'echo pid is $$'

因此,现在您得到的是执行命令bash而不是交互式shell返回的PID。

Admin | 10个月前



枪支相关




文本文件的单独列

November 26th 2020