一个简单的函数接收两个参数并相加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
。整个原始命令的行为都是如此。