zoukankan      html  css  js  c++  java
  • bash特殊字符-2

    ------------恢复内容开始------------

    tips:

    [],{}使用时前后要空格 [ asb=123 ]

    1.小括号(( ))

    1)命令组

    在括号中的命令列表,将会作为一个子 shell 来运行。

    在括号中的变量,由于是在子shell中,所以对于脚本剩下的部分是不可用的。父进程,也就是脚本本身,将不能够读取在子进程中创建的变量,也就是在子shell 中创建的变量。如:

    $ vim test20.sh

    输入代码:

    #!/bin/bash
    
    a=123
    ( a=321; )
    
    echo "$a" #a的值为123而不是321,因为括号将判断为局部变量

    运行代码:

    $ bash test20.sh
    a = 123

    在圆括号中 a 变量,更像是一个局部变量。

    2)初始化数组

    创建数组

    $ vim test21.sh

    输入代码:

    #!/bin/bash
    
    arr=(1 4 5 7 9 21)
    echo ${arr[3]} # get a value of arr

    运行代码:

    $ bash test21.sh
    7

    2.
    大括号({ })

    1)文件名扩展

    复制 t.txt 的内容到 t.back 中

    $ vim test22.sh

    输入代码:

    #!/bin/bash
    
    if [ ! -w 't.txt' ];
    then
        touch t.txt
    fi
    echo 'test text' >> t.txt
    cp t.{txt,back}

    运行代码:

    $ bash test22.sh

    查看运行结果:

    $ ls
    $ cat t.txt
    $ cat t.back

    注意: 在大括号中,不允许有空白,除非这个空白被引用或转义。

    2)代码块

    代码块,又被称为内部组,这个结构事实上创建了一个匿名函数(一个没有名字的函数)。然而,与“标准”函数不同的是,在其中声明的变量,对于脚本其他部分的代码来说还是可见的。

    $ vim test23.sh

    输入代码:

    #!/bin/bash
    
    a=123
    { a=321; }
    echo "a = $a"

    运行代码:

    $ bash test23.sh
    a = 321

    变量 a 的值被更改了。

    3.中括号([ ])

    1)条件测试

    条件测试表达式放在[ ]中。下列练习中的-lt (less than)表示小于号。

    双中括号([[ ]])也用作条件测试(判断)

    2)数组元素

    在一个array结构的上下文中,中括号用来引用数组中每个元素的编号。

    4.尖括号(< 和 >)

    重定向

    test.sh > filename:重定向test.sh的输出到文件 filename 中。如果 filename 存在的话,那么将会被覆盖。

    test.sh &> filename:重定向 test.sh 的 stdout(标准输出)和 stderr(标准错误)到 filename 中。

    test.sh >&2:重定向 test.sh 的 stdout 到 stderr 中。

    test.sh >> filename:把 test.sh 的输出追加到文件 filename 中。如果filename 不存在的话,将会被创建。

    5.竖线(|)

    管道

    分析前边命令的输出,并将输出作为后边命令的输入。这是一种产生命令链的好方法。

    $ vim test26.sh

    输入代码:

    #!/bin/bash
    
    tr 'a-z' 'A-Z'
    exit 0

    现在让我们输送ls -l的输出到一个脚本中:

    $ chmod 755 test26.sh
    $ ls -l | ./test26.sh

    输出的内容均变为了大写字母。

    6.破折号(-)

    1)选项,前缀

    在所有的命令内如果想使用选项参数的话,前边都要加上“-”。

    if [ "$a" -eq "$b" ]

    2)用于重定向stdin或stdout

    下面脚本用于备份最后24小时当前目录下所有修改的文件.

    $ vim test28.sh

    输入代码:

    #!/bin/bash
    
    BACKUPFILE=backup-$(date +%m-%d-%Y)
    # 在备份文件中嵌入时间.
    archive=${1:-$BACKUPFILE}
    #  如果在命令行中没有指定备份文件的文件名,
    #  那么将默认使用"backup-MM-DD-YYYY.tar.gz".
    
    tar cvf - `find . -mtime -1 -type f -print` > $archive.tar
    gzip $archive.tar
    echo "Directory $PWD backed up in archive file "$archive.tar.gz"."
    
    exit 0

    运行代码:

    $ bash test28.sh
    $ ls

    ------------恢复内容结束------------

  • 相关阅读:
    10.25 测试
    ##2018-2019-1 20165327 《信息安全系统设计基础》第四周学习总结
    实验一 开发环境的熟悉
    ch03 课下作业——缓冲区溢出漏洞实验
    20165327 2018-2017-1 《信息安全系统设计基础》第三周学习总结
    week02 课堂作业
    第四周学习总结
    2018-2019-1 20165204 《信息安全系统设计基础》第三周学习总结
    2018-2019-1 20165204《信息安全系统设计基础》第二周学习总结
    2018-2019-1 20165204 《信息安全系统设计基础》第一周学习总结
  • 原文地址:https://www.cnblogs.com/duwei2325/p/13332373.html
Copyright © 2011-2022 走看看