bash - 为什么 ksh 允许不成对的引号而 bash 不允许?

标签 bash shell awk ksh

当我执行以下命令时,在 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

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

关于bash - 为什么 ksh 允许不成对的引号而 bash 不允许?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44944457/

相关文章:

shell - 在容器中时如何从主机复制到容器

php - 音频波形许可被拒绝bbcrd

bash - 如何通过多个条件将一列拆分为另一列?

linux - 使用 awk 在 Linux 中分割日期

linux - 安排 Cron 跳过每个月的第一个星期六

bash - 如何在不特别命名文件的情况下将文件向上移动一个目录并删除旧目录?

bash - 如何提取命令结果字符串并在循环中使用它

python - 用 fabric 模拟 KeyboardInterrupt

反引号命令中的 bash pipestatus?

unix - 如何在现有 csv 文件的第一列中包含文件名