问题描述
我注意到 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。这些不是引用的替代方法。