shell 中的非对称引用语法

Asymmetric quoting syntax in shells

提问人:Pierre ALBARÈDE 提问时间:4/23/2021 更新时间:4/25/2021 访问量:26

问:

我注意到 Unix shell 和其他语言(如 LaTeX、HTML)中有一种趋势,即消除对称封闭语法。

通过对称封闭语法,我的意思是开始和结束符号是相同的,例如,shell 单引号 ', double quote “ 和 backtick ', LaTeX $。

建议用非对称封闭语法代替对称封闭语法,例如,在 shell 中写入 $(ls) 而不是 'ls',在 LaTeX 中写入 \(2+2\) 而不是 $2+2$。

这种变化的原因是人类读者或计算机程序(解析器)易于解释以及嵌套问题。

嵌套引号的解决方法通常是在一个级别使用双引号,在另一个级别使用单引号,但这不适用于三个级别,例如,并且单引号和双引号在参数替换方面也不同,因此您不能在两个级别上使用参数替换。echo "'"a"'"

有没有办法用允许嵌套的非对称结构替换 Unix shell 单引号和双引号?

我发现 $'' 作为单引号的不对称替代品,但双引号呢?

($“” 在 zsh 中不起作用。

shell 语法 引号

评论

0赞 KamilCuk 4/23/2021
Is there a way...你想要一个这样的答案:编写你自己的 shell 来做到这一点? 不,不是为了那个,而是为了翻译消息。$"" does not work for this in zsh$""
0赞 Pierre ALBARÈDE 4/24/2021
我宁愿在任何常见的 shell 中找到一些东西,如 zsh、bash,或者确信我正在寻找的东西没有用。

答:

1赞 KamilCuk 4/25/2021 #1

有没有办法用允许嵌套的非对称结构替换 Unix shell 单引号和双引号?

是的,编写你自己的 shell 实现来支持你想要的东西。现有的 shell 不支持这样的事情。选择一个明确的字符序列来表示引号,这样它就不会干扰其他 shell,并希望在与其他 shell 实现一起运行时导致语法错误。

我发现$''作为不对称的替代品

$''ANSI C 带引号的字符串,用于区域设置转换。这些都不是报价的替代品。$""

评论

0赞 Pierre ALBARÈDE 4/25/2021
法国海鸥 «» 会很棒,但它们不是 ASCII 集。