Linux Shell基础 单引号、双引号、反引号、小括号和大括号
2024-08-24 22:08:31
单引号和双引号
单引号和双引号用于变量值出现空格时将字符用引号括起来。 二者的主要区别在于,
被单引号括起来的字符都是普通字符,就算特殊字符也不再有特殊含义;
被双引号括起来的字符中,"$"、"\"和反引号是拥有特殊含义的,"$"代表引用变量的值,而反引号代表引用命令。
使用单引号
如果输出时使用单引号,则$PATH原封不动地输出
[root@localhost ~]# echo '$PATH'
使用双引号
如果输出时使用双引号,则会输出变量PATH的值
[root@localhost ~]# echo "$PATH"
反引号
如果需要调用命令的输出,或把命令的输出赋予变量,则命令必须使用反引号包含,这条命令才会执行,反引号的作用和 $(命令) 是一样的。命令如下:
[root@localhost -]# echo `ls`
anaconda-ks.cfg install.log install.log.syslog sh test testfile
用反引号包含命令,这条命令才会执行。否则只是输出字符 ls。
小括号和大括号
在介绍小括号和大括号的用法及区别之前,我们先解释两个概念:父 Shell 和子 Shell。
在 Bash 中,是可以调用新的 Bash 的,比如:
[root@localhost ~]# bash
[root@localhost ~]#
这时,可以通过 pstree 命令査看一下进程数,命令如下:
[root@localhost ~]# pstree
init──┬──abrt-dump-oops
…省略部分输出
├─sshd──┬──sshd───bash───bash───pstree
…省略部分输出
可以看到我们的命令都是通过 ssh 远程服务链接的,在 ssh 中生成了第一个 Bash,就是父 Shell。因为我们刚刚执行了 Bash 命令,所以在第一个 Bash 中生成了第二个 Bash,这个 Bash 就是子 Shell,我们是在子 Shell 中运行命令 pstree 的。
小括号和大括号主要区别在于:
- () 执行一串命令时,需要重新开启一个子 Shell 来执行。
- {} 执行一串命令时,在当前 Shell 中执行。
- () 和 {} 都是把一串命令放田括号里面,并且命令之间用";"隔开。
- () 最后一条命令可以不用分号。
- {} 最后一条命令要用分号。
- {} 的第一条命令和左括号之间必须有一个空格。
- () 和 {} 中括号里面的某条命令的重定向只影响该命令,但括号外的重定向则会影响到括号里的所有命令。
下面举几个例子。
#在父 Shell 中定义 name 的值是 li
[root@localhost ~]# name=li
#给name变量重新赋值,但是这个值只在子Shell中
[root@localhost ~]# (name=zhou;echo $name)
zhou
#父Shell中name的值还是li,而不是zhou
[root@localhost ~]# echo $name
li
#用大括号来进行一串命令的执行时,name变量的修改是直接在父Shell中进行的
[root@localhost ~]#{ name=wei;echo $name;}
wei
#name变量的值已经被修改了
[root@localhost ~]# echo $name
wei
其实在执行一串命令时,如果使用的是小括号,则这串命令所做的修改只在子 Shell 中生效,一旦命令执行结束,回到父 Shell 中,这个修改就会丟失;而如果使用的是大括号,则此串命令直接在父 Shell 中执行,命令执行结束后,修改依然会生效。
最新文章
- 关于Window Server2008 服务器上无法播放音频文件的解决方案
- 源码升级安装python
- 挂载windows共享文件夹
- C语言程序设计第9堂作业
- centos7 ssh 设置key认证
- nodeJS创建工程
- CodeForces 552C Vanya and Scales
- ecshop 改变sitemap.xml的位置
- ios文件读取
- ActiveMQ与RabbitMQ采用camel综合
- js 停止事件冒泡 阻止浏览器的默认行为(阻止a标签跳转 )
- js随机背景颜色
- Delphi RTTI的应用(一)
- JQuery的事件委托;jQuery注册事件;jQuery事件解绑
- SpringMVC使用HttpInvoker发布远程服务
- 机器学习:K-近邻算法
- 【StatLearn】统计学习中knn算法实验(2)
- pe如何安装ios系统
- HAWQ取代传统数仓实践(十九)——OLAP
- 两步让你的mobile traffic通过fiddler代理传送
热门文章
- bootstrap-table接合abp
- Sublime 中 SFTP插件的使用
- Oracle----oracle编程总结
- 基于springCloud的分布式架构体系
- Struts2开发者模式
- Android 编程之入门开发目录管理器开发抽屉与文件分类-4
- hdu 3062+1824(2-sat入门)
- git更新代码出现错误
- (转)gethostbyname() -- 用域名或主机名获取IP地址
- 使用IDEA工具整合mybatis时使用@Resource和@Autowired自动注解bean时会显示红色问题的解决办法