bash、ksh、tcsh和zsh之间的区别

6
考虑以下Shell代码:
unset foo
echo "${foo-'}'}"

结果取决于使用的shell:

  • bash: '}'
  • ksh: ''}
  • tcsh: 缺少 }
  • zsh: ''}

哪些 shell 行为符合 POSIX 标准?


我认为ash和dash都符合POSIX标准。 - pawamoy
一个 POSIX shell 的预期输出是什么? - clemens
1个回答

2

一个符合POSIX标准的shell应该输出:

''}

1
请问您能否解释一下为什么?或者指出一个相关的POSIX兼容shell的网络资源?或者是描述问题中所述的shell行为的POSIX手册相关部分? - l00p
1
你在表达式周围有双引号。花括号内的单引号因此不是定界引号。你基本上有${foo-'}。这意味着:如果foo未设置,则替换为单引号。这是输出中的第一个单引号。在闭合大括号之后,shell找到第二个单引号,后跟一个闭合大括号。由于这也仍然在最外层的引号内,因此这两个字符也被打印出来。如果您改为写echo ${foo-'}'},则会打印一个单个大括号。 - user1934428

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接