linux - 什么时候用引号括起 shell 变量?

标签 linux bash shell unix quotes

我应该或不应该在 shell 脚本中用引号将变量括起来?

例如,以下是正确的:

xdg-open $URL
[ $? -eq 2 ]

xdg-open "$URL"
[ "$?" -eq "2" ]

如果是,为什么?

最佳答案

一般规则:如果它可以为空或包含空格(或任何空白)或特殊字符(通配符),请引用它。不使用空格引用字符串通常会导致 shell 将单个参数分解为多个参数。

$? 不需要引号,因为它是一个数值。 $URL 是否需要它取决于您在其中允许的内容以及如果它为空是否仍需要参数。

出于习惯,我倾向于总是引用字符串,因为这样更安全。

关于linux - 什么时候用引号括起 shell 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58601502/

相关文章:

linux - 如何在 Linux 中找到正在运行的进程的单个线程的 %RAM 和 %CPU 消耗?

linux - 在 Linux 中选择多个同名的可执行文件

linux - 意外的 EOF 错误

linux - 如果不执行 script.sh 检查进程是否运行

regex - 使用 grep(或任何其他像 linux cmd 工具一样的 grep)来打印与文件中特定子字符串匹配的整个单词

bash - 在 MacOS 中使 ZSH 默认 Shell

linux - 迭代打印每个子文件夹的文件数

linux - xmodmap KeyPress事件到ButtonPress事件

linux - 用于 Eclipse (TEE) 的 TFS 插件 checkin 多个项目时超时

linux - cat 和 more 有不同的输出