单引号和双引号

单引号和双引号用于变量值出现空格时将字符用引号括起来。 二者的主要区别在于,

被单引号括起来的字符都是普通字符,就算特殊字符也不再有特殊含义;

被双引号括起来的字符中,"$"、"\"和反引号是拥有特殊含义的,"$"代表引用变量的值,而反引号代表引用命令。

使用单引号

如果输出时使用单引号,则$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 中执行,命令执行结束后,修改依然会生效。

最新文章

  1. 关于Window Server2008 服务器上无法播放音频文件的解决方案
  2. 源码升级安装python
  3. 挂载windows共享文件夹
  4. C语言程序设计第9堂作业
  5. centos7 ssh 设置key认证
  6. nodeJS创建工程
  7. CodeForces 552C Vanya and Scales
  8. ecshop 改变sitemap.xml的位置
  9. ios文件读取
  10. ActiveMQ与RabbitMQ采用camel综合
  11. js 停止事件冒泡 阻止浏览器的默认行为(阻止a标签跳转 )
  12. js随机背景颜色
  13. Delphi RTTI的应用(一)
  14. JQuery的事件委托;jQuery注册事件;jQuery事件解绑
  15. SpringMVC使用HttpInvoker发布远程服务
  16. 机器学习:K-近邻算法
  17. 【StatLearn】统计学习中knn算法实验(2)
  18. pe如何安装ios系统
  19. HAWQ取代传统数仓实践(十九)——OLAP
  20. 两步让你的mobile traffic通过fiddler代理传送

热门文章

  1. bootstrap-table接合abp
  2. Sublime 中 SFTP插件的使用
  3. Oracle----oracle编程总结
  4. 基于springCloud的分布式架构体系
  5. Struts2开发者模式
  6. Android 编程之入门开发目录管理器开发抽屉与文件分类-4
  7. hdu 3062+1824(2-sat入门)
  8. git更新代码出现错误
  9. (转)gethostbyname() -- 用域名或主机名获取IP地址
  10. 使用IDEA工具整合mybatis时使用@Resource和@Autowired自动注解bean时会显示红色问题的解决办法