微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux – 为什么我在shell脚本中使用双引号

参见英文答案 > When to wrap quotes around a shell variable?                                    5个
我理解使用单引号和双引号.

但我不知道情况需要在脚本中加双引号.

这些陈述没有差异

$echo Hello World! $1
$echo "Hello World! $1"

请告诉我正常和双引号之间的差异.

解决方法:

让我们考虑一下这些文件的目录:

$ls foo*
foo111.txt  foo11.txt  foo1.txt

让我们考虑一下脚本的一个小变化:

$cat script
#!/bin/sh
echo No quotes $1
echo "Double quotes $1"

现在,让我们运行它:

$bash script "foo*"
No quotes foo111.txt foo11.txt foo1.txt
Double quotes foo*

如您所见,结果完全不同.如果没有双引号,则执行路径名扩展.

为了说明另一个区别:

$bash script "long              space"
No quotes long space
Double quotes long              space

使用双引号,保留单词之间的长空格.没有它,所有连续的空格都被替换为一个空格.这是分词的一个例子.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐