- 环境
- 虚拟机:VMware-10.0.7 build-2844087
- Linux系统:CentOS 6.8
- 远程工具:Xshell 6 (Build 0197)
Shell编程_Shell基础_Bash特殊符号—其他特殊符号
一、本文摘要
- 内容摘要
- 其他特殊符号及作用,比如大小括号,单双引号等
- 用法举例
二、其他特殊符号
符号 | 作用 |
---|---|
'' | 单引号。在单引号中所有的特殊符号,如 $ 和 “`”反引号都没有特殊含义 |
“” | 双引号。在双引号中特殊字符都没有特殊含义,但 $、“``”和“\”是例外,拥有特殊含义 $:调用变量的值; ``:引用命令; \:转义符 |
`` | 反引号。反引号括起来的是系统命令,在Bash中会先执行它,和$()作用一样,推荐使用$(),因为反引号容易看错 |
$() | 和反引号作用一样,用于引用系统命令 |
() | 用于一串命令执行时,()中的命令会在子Shell中运行 |
{} | 用于一串命令执行时,{}中命令会在当前Shell中执行,也可以用于变量变形与替换 |
[] | 用于变量的测试 |
# | #开头的代表注释 |
$ | 用于调用变量的值,如需调用变量name的值时,需要用$name的方式得到变量的值 |
\ | 转义符,跟在\之后的特殊字符将失去特殊意义,变为普通字符 |
- 举例1:单双引号、$的作用及用法
[root@localhost ~]# name=Blanchard <--设置初始变量name
[root@localhost ~]# echo '$name' <--单引号中没有特殊字符
$name <--输出单引号中的数值
[root@localhost ~]# echo "$name" <--双引号,$由特殊意义,调用变量值
Blanchard <--输出变量值
[root@localhost ~]# echo $name <--调用变量的值,等同于加了双引号""
Blanchard
- 举例2:#号用法,主要用于注释
- 举例3:反引号``和 $() 的用法
- 两种特殊符号说明
- 都调用系统命令,在子Shell中运行
- 把命令结果赋给变量
- 只要命令有输出,就会赋给变量
- 命令结果为空,不能赋给变量,切记。
[root@localhost ~]# echo `date` <--反引号用法
2022年 06月 11日 星期六 15:17:07 CST
[root@localhost ~]# echo $(date) <--$()用法
2022年 06月 11日 星期六 15:17:33 CST
[root@localhost ~]# date <--=date命令在当前Shell直接输出
2022年 06月 11日 星期六 15:17:35 CST
[root@localhost ~]# echo "`date`" <--双引号中特殊符号
2022年 06月 11日 星期六 15:18:16 CST
- 举例4:小括号()和大括号{}用法
- 概念理解
- 父Shell和子Shell:当前Shell下,再看一个Shell,前者为父Shell,后者为子Shell。
- 知识点补充:
- ps:查看当前进程
- pstree:查看进程树,默认CentOS 6.8无此命令,自行yum安装一下
- 小括号()和大括号{}区别
异同点 | 具体内容 |
---|---|
共同点 | 都用于一串命令的执行 |
都是把命令放在括号里,并且命令之间用 ; 号隔开 | |
括号里的某个命令的重定向只影响该命令,而括号外的重定向影响到括号里的所有命令 | |
不同点 | 小括号()执行一串命令时,需要重新开一个子Shell进行执行 |
大括号{}执行一串命令时,在当前Shell中执行 | |
小括号()最后一个命令可以不用分号; | |
大括号{}最后一个命令要用;号 | |
小括号()里的各命令不必和括号有空格 | |
大括号{}和第一个命令之间必须有一个空格 |
[root@localhost ~]# name=Blanchard <--设定初始变量name
[root@localhost ~]# (name=Tiger;echo $name) <--小括号表示命令在子Shell中运行,影响子Shell结果
Tiger
[root@localhost ~]# echo $name <--对父Shell变量值,不产生影响
Blanchard
[root@localhost ~]# { name=Tiger;echo $name; } <--大括号表示命令在当前Shell或父Shell中运行,影响父Shell中结果,此时name变量值为Tiger
Tiger
[root@localhost ~]# echo $name <--查看当前变量值,确实已发生改变
Tiger
[root@localhost ~]# name=Tiger;echo $name <--大括号得到的输出结果与不加大括号结果输出一致,所以大括号可以省略。
Tiger
三、未提及特殊符号——中括号[]
- 原因说明
- 中括号作用:主要用于变量测试
- 变量测试涉及内容较多,会在下一个小结中总结出来
四、小结
本文知识点总结
其他特殊符号作用
其他特殊符号用法
本文到此结束 !