zoukankan      html  css  js  c++  java
  • Linux Shell基础 单引号、双引号、反引号、小括号和大括号

    单引号和双引号

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

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

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

    使用单引号

    如果输出时使用单引号,则$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 中执行,命令执行结束后,修改依然会生效。
  • 相关阅读:
    剑指offer_11:二进制中1的个数
    剑指offer_10:矩形覆盖
    spring mvc 访问静态资源
    spring context:component-scan ex
    spring aop配置未生效
    415 Unsupported Media Type
    spring mvc 接收List对象入参
    JIRA甘特图
    JIRA的工时
    JIRA导出工作日志到Excel
  • 原文地址:https://www.cnblogs.com/lizhouwei/p/9992011.html
Copyright © 2011-2022 走看看