shell脚本中的引号

我是否应该在 shell 脚本中用引号括住变量?

例如,一下两个脚本的区别是啥?

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

一般规则:如果参数可以为空或包含空格(或任何空格)或特殊字符(通配符),则将其括起来。不将带空格的字符串括起来通常会导致 shell 将单个参数拆分成多个参数。

假设 script.sh内容是显示第1个参数

# script.sh
echo $1
name="hello word"

# 下面的命令将输出  hello
./script.sh $name   # 等价于   ./script.sh  hello  word  传递两个参数给脚本 script.sh,输出结果是 hello
# 下面的命令将输出  hello word
./script.sh "$name"  #  等价于  ./script.sh  "hello word"  传递了1个参数给脚本 script.sh,输出结果是 hello word

$?不需要引号,因为它是数值。$URL是否需要,取决于里面是否有空字符,如果有空字符仍需要参数引号。我倾向于总是出于习惯而引用字符串,因为这样更安全。

0 0 投票数
文章评分
订阅评论
提醒
guest
0 评论
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x