• Shell的特殊字符


    #  有意义的“#”符合
      echo ${PATH#*:} # 参数替换,不是一个注释
      echo $(( 2#101011 )) # 进制转换,可以是任意进制,不是一个注释

    “.”   .字符匹配,这是作为正则表达是的一部分,用来匹配任何的单个字符.
      【例】bash$ cp /home/bozo/current_work/junk/* .

    ,   逗号链接了一系列的算术操作,虽然里边所有的内容都被运行了,但只有最后一项被返回.
      【例】let "t2 = ((a = 9, 15 / 3))" # 设制变量 "a = 9" 和 "t2 = 15 / 3"

      转义字符,如X 等价于"X"或'X'.
    /   文件名路径分隔符.或用来做除法操作.

    :   空命令,等价于"NOP"(no op,一个什么也不干的命令).也可以被认为与shell 的内建命令(true)作用相同.
        ":"命令是一个 bash 的内建命令,它的返回值为0,就是shell 返回的true.

    [root@localhost TeShuzifu]# cat Sixunhuan.sh 
    #!/bin/bash
    #描述:
    # 用":"写死循环
    #作者:孤舟点点
    #版本:1.0
    #创建时间:2017-11-12 13:09:30
    PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
    export PATH
    while :
    do
    date "+%Y%m%d-%H%M%S"
    sleep 1
    done
    [root@localhost TeShuzifu]#
    [root@localhost TeShuzifu]# cat Ifzhanweifu.sh 
    #!/bin/bash
    #描述:
    # 用if语句使用占位符":"。
    #作者:孤舟点点
    #版本:1.0
    #创建时间:2017-11-12 13:24:00
    PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
    export PATH
    
    if [ : ] ; #代表true
     then :  #什么都不做,引出分支。
     date
     sleep 1
    fi
    [root@localhost TeShuzifu]# 

      也可能用来作为注释行,虽然我们不推荐这么做.使用#来注释的话,将关闭剩余行的错误检查,所以可以在注释行中写任何东西.然而,使用:的话将不会这样.如:

      1 : This is a comment thar generates an error,(if [ $x -eq 3] ).

      ":"还用来在/etc/passwd 和$PATH 变量中用来做分隔符.

    [root@localhost TeShuzifu]# echo $PATH
    /usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
    [root@localhost TeShuzifu]# 

    $?  退出状态变量.$?保存一个命令/一个函数或者脚本本身的退出状态.

    $$   进程ID 变量.这个$$变量保存运行脚本进程ID


    ()   命令组.如:

    1 (a=hello;echo $a)
    注意:在()中的命令列表,将作为一个子shell 来运行.
    在()中的变量,由于是在子shell 中,所以对于脚本剩下的部分是不可用的.
    如:
    1 a=123
    2 ( a=321; )
    3
    4 echo "a = $a" # a = 123
    5 # 在圆括号中a 变量,更像是一个局部变量.

    用在数组初始化,如:
    1 Array=(element1,element2,element3)
    {xxx,yyy,zzz...}

    大括号扩展,如:
    1 cat {file1,file2,file3} > combined_file
    2 # 把file1,file2,file3 连接在一起,并且重定向到combined_file 中.
    3
    4 cp file22.{txt,backup}
    5 # 拷贝"file22.txt" 到"file22.backup"中


    一个命令可能会对大括号中的以逗号分割的文件列表起作用[1]. file globbing 将对
    大括号中的文件名作扩展.
    注意: 在大括号中,不允许有空白,除非这个空白是有意义的.
    echo {file1,file2} :{ A," B",' C'}
    file1 : A file1 : B file1 : C file2 : A file2 : B file2 : C

    {}   代码块.又被称为内部组.事实上,这个结构创建了一个匿名的函数.但是与函数不同的是,在其中声明的变量,对于脚本其他部分的代码来说还是可见的.如:

    bash $
    {
    local a;
    a= 123;
    }
    bash中的local 申请的变量只能够用在函数中.
    1 a=123
    2 { a=321; }
    3 echo "a = $a" # a = 321 (说明在代码块中对变量a 所作的修改,影响了外边的变量a)
  • 相关阅读:
    吴军博士:物联网和人工智能将再造一个英特尔和微软 | 万物互联
    速来膜拜!20位活跃在Github上的国内技术大牛
    创建带Mipmap的osg::Image
    C#文件系统管理【转】
    C#文本文件(.txt)读写 [转]
    C#连接SQL Server数据库进行简单操作[转]
    shell脚本把一些请求量非常高的ip给拒绝掉
    linux获取精准进程PID之pgrep命令
    Kubernetes的Cron Job
    StatefulSet和Deployment的区别
  • 原文地址:https://www.cnblogs.com/weijiangbao/p/7990057.html
Copyright © 2020-2023  润新知