linux - 我什么时候应该在 shell 变量周围加上引号?

我应该还是不应该在 shell 脚本中为变量加上引号?

例如,以下是否正确:

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

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

如果是这样,为什么?

最佳答案

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

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

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

https://stackoverflow.com/questions/10067266/

相关文章:

python - 获取文件的最后n行,类似于tail

python - 只读取文件的第一行?

mysql - 如何测试MySQL在哪个端口上运行以及是否可以连接?

linux - 省略任何 Linux 命令输出的第一行

python - 如何在不破坏默认行为的情况下覆盖 __getattr__?

linux - 如何重定向已运行进程的输出

python - 获取列表的内容并将其附加到另一个列表

python - Python 2 如何比较字符串和整数?为什么列表比较大于数字,而元组大于列表?

c - Linux中的itoa函数在哪里?

python - 是否可以在没有迭代器变量的情况下实现 Python for range 循环?