一尘不染

何时将引号括在shell变量周围?

linux

有人可以告诉我是否应该在Shell脚本中的变量周围加上引号吗?

例如,以下是正确的:

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

要么

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

如果是这样,为什么?


阅读 287

收藏
2020-06-02

共1个答案

一尘不染

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

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

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

2020-06-02