1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 【Linux】Shell(Bash)单引号 双引号 不加引号和反引号用法和区别详解

【Linux】Shell(Bash)单引号 双引号 不加引号和反引号用法和区别详解

时间:2021-09-23 22:33:38

相关推荐

【Linux】Shell(Bash)单引号 双引号 不加引号和反引号用法和区别详解

简要总结

不加引号:不会将含有空格的字符串视为一个整体输出, 如果内容中有变量等,会先把变量解析出结果,然后在输出最终内容来,如果字符串中带有空格等特殊字符,则不能完整的输出,需要改加双引号,一般连续的字符串,数字,路径等可以用。

不带引号时,默认为字符串赋值,不能带空格,执行会报错 command not found,原理是不带引号表示赋值操作,如果没有空格,那么会误认为是多个命令,而命令又不存在。

单引号:可以说是所见即所得:即将单引号内的内容原样输出,或者描述为单引号里面看到的是什么就会输出什么。

双引号:把双引号内的内容输出出来;如果内容中有变量,会先把变量解析出结果,然后在输出最终内容来。

单引号和双引号之分,二者的 主要区别在于,被单引号括起来的字符都是普通字符,就算特殊字符也不再有特殊含义;而被双引号括起来的字符中“$”、"\“和反引号是拥有特殊含义的,”$"代表引用变量的值,而反引号代表引用命令。

反引号:如果需要调用命令的输出,或把命令的输出赋予变量,则命令必须使用反引号包含,这条命令才会执行。反引号的作用和 $(命令) 是一样的,但是反引号非常容易和单引号搞混,所以推荐大家使用 $(命令)的方式引用命令的输出。

反引号就是 tab键上面那个符号 。正如不加引号,默认把命令当做普通字符串,因此加了反引号,就能识别为命令

[root@EMS3 test]# echo date # date被当做字符串,被原封不动的打印了出来date[root@EMS3 test]# echo `date` #带反引号Thu Feb 16 10:57:06 CST # 输出日期格式

注意:反引号等价于$()语法,括号是必须的,表示是命令,而不是变量

[root@localhost ~]# echo $(date) 10月 21 日 星期一 18:25:09 CST#打印出日期[root@localhost ~]# echo $date没有结果,因为不存在date变量,除非你先定义一个

示例

可以直接在终端执行命令,多行命令也能识别,例如先定义一个变量,然后在下一条命令进行引用,也可以再shell脚本中写入多条命令,然后再执行这个脚本进行验证。

1、有空格,必须加双引号。

比如 name=zhang san 这样执行就会出现问题,反例

[root@localhost ~]# name=zhang san -bash: san: command not found # 报san: command not found,此时san字符串被误识别为命令,而命令又不存在于系统集中

而必须用引号括起来,正例:

[root@localhost ~]# name="zhang san" [root@localhost ~]# echo $name #注意:这个打印语法中,变量没有引号等符号,与后文中示例进行区分zhang san#输出zhang san

2. 如果输出时使用单引号,则$name原封不动地输出

反例:

[root@localhost ~]# name="zhang san" [root@localhost ~]# echo '$name'$name # 注意:此时$符号也被原封不动的打印了出来

正例:

[root@localhost ~]# name="zhang san" [root@localhost ~]# echo $name #注意:这个打印语法中,变量没有引号等符号,与后文中示例进行区分zhang san#输出zhang san

3.如果输出时使用双引号,则会输出变量name的值

正例:

[root@localhost ~]# echo "$name"zhang san# 成功打印

如果被双引号括起来,那么这条命令仍会正常执行:

[root@localhost ~]# echo "`date`" 10月 21 日星期一 18:14:21 CST

也就是说双引号不影响原有的语法

参考

Shell(Bash)单引号、双引号、不加引号和反引号用法详解

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。