bash - zsh 或 bash 是否有方便英文文本的引号?

标签 bash escaping quotes zsh

如果我使用单引号,带有撇号的单词(“不要”)很难转义:

'Don'"'"'t do that'

如果我使用双引号、美元符号和感叹号会出错:

"It cost like \$1000\!"

我可以使用另一种引用方式吗?

编辑:我还应该补充一点,我想将此字符串作为命令行参数直接传递,而不是将其存储在变量中。为此,我尝试使用 DigitalRoss 的解决方案,

$ echo "$(cat << \EOF 
Don't $worry be "happy".
EOF)"

但是得到

dquote cmdsubst> 

点击后输入:/。所以此时 ZyX 的建议 setopt rcquotes 看起来是最方便的。

最佳答案

你可以用 zsh 做

setopt rcquotes

.然后像这样转义 ASCII 撇号:

echo 'Don''t'

.或者将您的键盘映射设置为能够输入 UTF 撇号,它们在任何 shell 中对任何类型的引号(包括无引号)都没有问题:

echo 'Don’t'

.第三个适用于 zsh 和 bash:

echo $'Don\'t'

.

first 和 third 都不能将引号缩小到单个字符,但对于非冗长的字符串,它们仍然比上面建议的 heredoc 更简洁。借助 zsh,您可以通过使用自定义接受行小部件来实现这一点,该小部件会将 'Don't' 等结构替换为 'Don'\''t'。需要我只能用 perl 编写的相当棘手的正则表达式魔术;这可能不是最好的主意,因为我不能假装我可以在它们发生之前涵盖所有可能的情况。它在任何情况下都不会触及任何脚本。

关于bash - zsh 或 bash 是否有方便英文文本的引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12884902/

相关文章:

c - char 数组中的终止符

java - JDBC 和 Oracle 数据库 : Escape ' (single quote)

查询字符串中的 Java SQL 引号

linux - Linux 中花括号的评估

linux - bash 和 linux 内核中的 Shebang 行限制

javascript - 转义的反斜杠在字符串中显示为 "\\"

javascript - 在 onclick 事件中转义传递给 js 函数的字符串中可能的引号

带引号的 Python 和 MySQL 查询

string - Bash 正则表达式仅用于数字和点

linux - 在 bash 脚本中循环执行命令时,如何将来自 cURL 的响应主体保存在文件中?