shell 中的非对称引用语法

问题描述

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

对称包围语法,我的意思是开始和结束符号是相同的,例如,shell单引号'、双引号“和反引号`、LaTeX $。

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

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

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

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

我发现 $'' 是单引号的不对称替代方案,但双引号呢?

($"" 在 zsh 中不起作用。)

解决方法

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

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

我发现 $'' 是一种不对称的替代方案

DirectoryChooser directoryChooser = new DirectoryChooser(); // Parent stage Stage stage = (Stage) anchoriId.getScene().getWindow(); // Set Initial Directory as Documents directoryChooser.setInitialDirectory(new JFileChooser().getFileSystemView().getDefaultDirectory()); // Select parent stage selectedFolder = directoryChooser.showDialog(stage); if (selectedFolder == null) { // Get Documents path selectedFolder = new JFileChooser().getFileSystemView().getDefaultDirectory().getAbsoluteFile(); } ANSI C quoted string,而 $''locale translation。这些不是引用的替代方法。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...