『忘了再学』Shell基础 — 9、Bash中的特殊符号(一)
1、双单引号
''
:单引号。在单引号中所有的特殊符号,如$
和"`"(反引号)都没有特殊含义。
2、双引号
""
:双引号。在双引号中特殊符号都没有特殊含义,但是$
、"`"(反引号)和\
除外,这三个符号是有特殊含义的,拥有“调用变量的值”、“引用命令”和“转义符"的特殊含义。
单引号和双引号的区别,举例如下:
# 1.定义变量name的值是sc
[root@localhost ~]# name=sc
# 2.如果输出时使用单引号,则$name原封不动的输出
[root@localhost ~]# echo '$name'
$name
# 3.如果输出时使用双引号,则会输出变量name的值sc
[root@localhost ~]# echo "$name"
sc
# 4.反引号括起来的命令会正常执行
[root@localhost ~]# echo `date`
2020年 6月 21 日星期一 18:16:33 CST
# 5.但是如果反引号命令被单引号括起来,那么这个命令不会执行,
# `date`会被当成普通字符输出
[root@localhost ~]# echo '`date`'
`date`
# 如果是双引号括起来,那么这个命令又会正常执行
[root@localhost ~]# echo "`date`"
2020年 6月 21 日星期一 18:18:18 CST
3、$
符号
$
:用于调用变量的值,如需要调用变量name
的值时,需要用$name
的方式得到变量的值。
在Linux系统中,定义一个变量非常简单,直接用变量名=变量值
的格式定义变量就可以了。而我们在查看变量值的时候,使用$变量名
就可以查看到。
如下,用echo
命令查看变量name
的值,如果我们不加$
,echo
命令会认为要输出name
字符串,如果在name
前加上$
符号,echo
命令就会输出变量name
的值。
# 定义name变量
[root@localhost ~]# name=sc
[root@localhost ~]# echo name
name
[root@localhost ~]# echo $name
sc
4、反引号
"``":反引号。反引号括起来的内容是系统命令,在Bash中会先执行它。和$()
作用一样,不过推荐使用$()
,因为反引号非常容易看错。
5、$()
符号
$()
:和反引号作用一样,用来引用系统命令。
如果我们直接从命令行中执行一个系统命令(如date
命令),这个时候命令是不用$()
符号括起来的,因为Shell是可以直接调用系统命令的。
那什么时候需要把系统命令括起来呢?
如定义一个变量a
,需要把date
命令的结果,赋值给a
的时候,如a=date
。这个时候就需要让date
命令先运行,再把所得到的值赋值给变量a
。
如下示例:
[root@localhost ~]# a=date
[root@localhost ~]# echo $a
date
[root@localhost ~]# a=`date`
[root@localhost ~]# echo $a
2020年 6月 22日 星期一 18:18:18 CST
上面示例中可以看到,如果date
命令不加反引号,Shell会认为把date
字符串赋值给a
变量。
总结:也就是说,只有需要把命令的结果赋值于变量的时候,才需要用反引号或者
$()
符号把命令括起来。任何命令的结果都可以赋值给变量,只要命令的结果有输出,像cd
命令就不可以。
推荐使用$()
代替反引号。
- 练习:把
root
目录下所有文件的文件名存入变量b中。[root@localhost ~]# b=$(ls /root)
[root@localhost ~]# echo $b
anaconda-ks.cfg install.log install.log.syslog
- 综合练习:
# 如果命令不用反引号包含,命令不会执行,而是直接输出
[root@localhost ~]# echo ls
ls # 只有用反引号包括命令,这个命令才会执行
[root@localhost ~]# echo `ls`
anaconda-ks.cfg install.log install.log.syslog # 使用$(命令)的方式也是可以的
[root@localhost ~]# echo $(date)
2020年 6月 22日 星期一 18:18:18 CST
6、#
符号
#
:在Shell脚本中,#
开头的行代表注释。
7、\
符号
\
:转义符,跟在\
之后的特殊符号将失去特殊含义,变为普通字符。如\$name
将输出$name
符号,而不当做是变量引用。
『忘了再学』Shell基础 — 9、Bash中的特殊符号(一)的更多相关文章
- 『忘了再学』Shell基础 — 10、Bash中的特殊符号(二)
提示:本篇文章接上一篇文章,主要说说()小括号和{}大括号的区别与使用. 8.()小括号 ():用于一串命令执行时,()中的命令会在子Shell中运行.(和下面大括号一起说明) 9.{}大括号 {}: ...
- 『忘了再学』Shell基础 — 24、Shell正则表达式的使用
目录 1.正则表达式说明 2.基础正则表达式 3.练习 (1)准备工作 (2)*练习 (3).练习 (4)^和$练习 (5)[]练习 (6)[^]练习 (7)\{n\}练习 (8)\{n,\}练习 ( ...
- 『忘了再学』Shell基础 — 11、变量定义的规则和分类
目录 1.定义变量的规则 2.变量的分类 1.定义变量的规则 在定义变量时,有一些规则需要遵守 变量名称可以由字母.数字和下划线组成,但是不能以数字开头.如果变量名是2name则是错误的. 在Bash ...
- 『忘了再学』Shell基础 — 16、位置参数变量
目录 1.位置参数变量$n 2.位置参数变量$*和$@ 3.位置参数变量$# 位置參数变量的作用主要用于脚本的传参. 位置參数变量的名称和作用都是确定不能改变的,但是该变量的内容是可以更改的,也就是变 ...
- 『忘了再学』Shell基础 — 2、Shell的作用与分类
目录 1.Shell的作用 2.Shell的分类 1.Shell的作用 Shell除了能解释用户输入的命令,将它传递给内核,还可以: 调用其他程序,给其他程序传递数据或参数,并获取程序的处理结果. 在 ...
- 『忘了再学』Shell基础 — 14、环境变量(二)
目录 1.PS1变量的作用 2.PS1变量的查看 2.PS1可以支持的选项 3.PS1环境变量的配置 4.总结 提示: 在Linux系统中,环境变量分为两种.一种是用户自定义的环境变量,另一种是系统自 ...
- 『忘了再学』Shell基础 — 3、echo命令的介绍与使用
目录 1.echo命令的作用 2.echo命令的基本用法 3.echo命令的-e选项用法 4.echo命令一些特殊用法 (1)输出字符带有字体颜色 (2)输出字符带有背景颜色 在讲Shell脚本之前, ...
- 『忘了再学』Shell基础 — 25、扩展正则表达式
目录 1.扩展正则表达式说明 2.练习 (1)+和?练习 (2)|和()练习 3.注意(重点) 1.扩展正则表达式说明 熟悉正则表达式的童鞋应该很疑惑,在其他的语言中是没有扩展正则表达式说法的,在Sh ...
- 『忘了再学』Shell基础 — 30、sed命令的使用
目录 1.sed命令说明 2.行数据操作 (1)查看文件中的数据 (2)删除文件中的数据 (3)向文件中追加数据 (4)向文件中插入数据 (5)修改文件中的多行数据(删除,追加,插入) (6)替换文件 ...
随机推荐
- Microsoft Edge如何安装去广告插件
Microsoft Edge如何安装去广告插件 第一步:安装最新版本Edge https://www.microsoft.com/zh-cn/edge?form=MA13DO&OCID=MA1 ...
- 关于python很好的网站和书籍
https://python-patterns.guide/ https://docs.python-guide.org/ https://www.amazon.com/_/dp/1491946008 ...
- 17调试经验之串口读写flash协议
一是设计功能 我的理解协议就是一个命令包,通过给出不同的控制命令,来调动不同的功能模块,实现不同的功能,如读数据,写数据,擦除等. 二设计过程 先看了尤老师的视频,主要讲了大致设计原理和总体框架,当然 ...
- mycat的基本介绍 看这一篇就够了
1.前置知识 1.分布式系统 分布式系统是指其组件分布在网络上,组件之间通过传递消息进行通信和动作协调的系统.它的核心理念是让多台服务器协同工作,完成单台服务器无法处理的任务,尤其是高并发或者大数 ...
- 数据库篇:mysql日志类型之 redo、undo、binlog
前言 可以说mysql的多数特性都是围绕日志文件实现,而其中最重要的有以下三种 redo 日志 undo 日志 binlog 日志 关注公众号,一起交流:微信搜一搜: 潜行前行 1 redo日志 in ...
- zookeeper 负载均衡和 nginx 负载均衡区别 ?
zk 的负载均衡是可以调控,nginx 只是能调权重,其他需要可控的都需要自己写插件:但是 nginx 的吞吐量比 zk 大很多,应该说按业务选择用哪种方式.
- volatile 有什么用?能否用一句话说明下 volatile 的应用场景?
volatile 保证内存可见性和禁止指令重排. volatile 用于多线程环境下的单次操作(单次读或者单次写).
- phpstorm chrome 添加xdebug扩展
转:https://blog.csdn.net/ltcm_sakura/article/details/102967859 一.Xdebug helper:php调试插件 http://chromec ...
- Redis 常见的性能问题都有哪些?如何解决?
Redis 常见的性能问题都有哪些?如何解决? Master写内存快照,save命令调度rdbSave函数,会阻塞主线程的工作,当快照比较大时对性能影响是非常大的,会间断性暂停服务,所以Master最 ...
- 如果在拦截请求中,我想拦截get方式提交的方法,怎么配置?
可以在@RequestMapping注解里面加上method=RequestMethod.GET.