shell脚本中单引号和双引号的区别

 我来答
百度网友7edb97a4b88
2019-04-29 · TA获得超过3.5万个赞
知道大有可为答主
回答量:1.2万
采纳率:30%
帮助的人:983万
展开全部
在linux操作系统上编写shell脚本时候,我们是在变量的前面使用$符号来获取该变量的值,通常在脚本中使用”$param”这种带双引号的格式,但也有出现使用'$param'这种带引号的使用的场景,首先大家看一段例子:
复制代码代码如下:
[root@linux
~]#
name=tektea
[root@linux
~]#
echo
$name
tektea
[root@linux
~]#
sayhello=”hello
$name”
[root@linux
~]#
echo
$sayhello
hello
tektea
[root@linux
~]#
sayhello='hello
$name'
[root@linux
~]#
echo
$sayhello
hello
$name
发现了吗?没错!使用了单引号的时候,那
$name将失去原有的变量内容,仅为一般字符的显示型态而已!这里必需要特别小心在意!
所以,单引号与双引号的最大不同在于双引号仍然可以保有变量的内容,但单引号内仅能是一般字符,而不会有特殊符号,我们也可以这里理解:'$sayhello'

“\$sayhello”是相同的。
在shell脚本开发过程中,针对变量的单引号(‘)和双引号(“)都是有应用场景的,根据我的经验总结起来就是:
1.
获取变量值的时候就使用双引号(“),这是基本用法。
2.
如果是在脚本中要编写一个新的脚本,同时这个新的脚本中还需要包含变量,你就可以选择使用单引号(‘)了,特别是生成一个临时的expect脚本时,单引号(‘)就会经常使用到的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
窦秀英蒯未
2020-02-22 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.4万
采纳率:33%
帮助的人:743万
展开全部
shell脚本中的单引号和双引号一样都是字符串的界定符,而不是字符的界定符。单引号用于保持引号内所有字符的字面值,即使引号内的\和回车也不例外,但是字符串中不能出现单引号。(注意是所有,只是单引号本身不能够出现在其中)。
双引号用于保持引号内所有字符的字面值(回车也不例外),但以下情况除外:
$加变量名可以取变量的值
反引号仍表示命令替换
\$表示$的字面值
\`表示`的字面值
\"表示"的字面值
\\表示\的字面值
除以上情况之外,在其它字符前面的\无特殊含义,只表示字面值。
从上就可以看出单引号和双引号的区别。下面举几个例子:
可见,单引号中完全是保持字符串的原型输出,而双引号进行了命令替换。
由上可见虽然单引号和双引号都是字符串的限定符,但还是有所区别。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式