为什么 ksh 允许未配对的引号,而 bash 不允许?



当我执行以下命令时,在 bash shell 上出现错误,但在 Korn shell 上它运行良好。唯一的区别是在 awk 末尾缺少单引号,在 } 之后。你能帮我理解为什么吗?

echo `echo "a b c d" | awk '{ print $1 }`

在 Korn shell 中,反引号和引号都可以不匹配,分词器将尝试猜测其中任何一个的结尾并相应地匹配它们。

例子:

/home/ufierro # echo "`echo ah" 
+ echo ah
+ echo ah
ah
/home/ufierro # echo `echo 'hello world` 
+ echo 'hello world'
+ echo hello world
hello world

请注意,这两个示例如何显示上述行为的不同情况。 第一个示例显示了如何在解析期间完成双引号内的单个反引号,第二个示例显示了如何在反引号内完成单个引号。

最新更新