为什么双引号会使字符串作为函数运行?

为什么双引号会使字符串作为函数运行?

一个简单的函数接收两个参数并相加and,然后打印它们。

function myprint(){ echo "$1 and $2";}

有用。

myprint  xx  yy
xx and yy

它是一个字符串,bash 单独解析它。

"myprint  xx  yy"
bash: myprint  xx  yy: command not found

为什么双引号会使字符串作为函数运行?

""myprint  xx  yy""
xx and yy

答案1

您的“双引号”实际上不是嵌套的。两次双引号立即打开和关闭。

""myprint  xx  yy""
^^                  this is one pair of quotes with empty content
                 ^^ this is anther pair with empty content
  ^^^^^^^^^^^^^^^   this is not quoted at all

实际上,""myprint命令的名称是:空字符串与“myprint”连接,这解析为函数myprint;最后一个参数是字符串“yy”与空字符串连接。

因此你得到了 unquoted myprint xx yy。整个原始命令的行为都是如此。

相关内容