zoukankan      html  css  js  c++  java
  • linux Shell编程

    0. man bash可以看到很多很多

    1. 变量与变量值(展开)

        如果你需要的是变量名,直接使用变量名;如果你需要的是变量值,使用$符号。例如:

        export PATH=/home/bin:$PATH

        如果你不确定是要变量还是展开的变量值,那么试着展开下代入表达式看看对不对头。

        一般来说,需要左值的地方(给变量赋值)直接用变量名;需要右值的地方(取变量的值)加$符号。

    2. 变量赋值,等于号前后不要加空格(加空格的形式用于变量比较)。

    3  隔开变量和后缀:

        ${go}ing

        注意不要{$go}ing

    4. shell通配符和引号

    4.1 没有引号

          例如ls *.*,shell会将*.*展开为当前目录下所有文件,然后传递给 ls。

    4.2 双引号

          如果你用ls "*.*",shell会将*.*原样传递给ls,ls就会告诉你没有哪个文件的文件名是*.*

          但是,如果双引号内存在$符号,shell还是会解释。

    4.3 单引号

          好了,现在连$也不解释了。

    5. C风格表达式

        #!/bin/bash

        var=2                        # 默认变量类型是string,不能直接进行数学运算

        echo $((var * var))    # ((C  stype expression)),放在两个小括号内,可以在运算符前后加空格,取变量var的值不需要$,计算得到的新(临时?)变量仍然用$引用交给echo

        echo $var                 # var的值还是2,没有改变。如果上一行是$((var++)),那这一行就是3了。

    6. if条件语句

        在shell中,if、[、]等都是内置命令,所以if和[之间以及[]和条件之间都需要用空格分开,避免解释器将if[解释为一条命令。同样的理由,if语句和then语句要分两行或以分号隔开,避免解释器将then认作是if的参数(虽然then不是内置命令)。 

    if [ -f testfile ]
    then
        # do something
    fi
    #或者这样写
    if [ -f testfile ]; then
        #do something
    fi

        上面程序可简写为:

         [ -f testfile ] && do_something

        ||符号也是也可以这么用的:

         [ -f testfile ] || { echo "oops!"; exit 1; }

         同样需注意空格问题:[]和||和{}之间;{}内侧;分号后面。原因都是为了告知bash,命令或参数已结束。注意大括号内部的命令,每条后面都要加分号。

         更多结束:[]内部语句相当于一个测试表达式,有返回值。因此你可以用if判断这个返回值,也可以让bash判断这个返回值。

     6.1 字符串比较

    # "=="符号前后加空格
    # 两个字符串都用引号包围
    # 否则当$str未定义时会发生问题

    if
    [ "$str" == "string" ]; then # do something fi

    字符串比较时,两个字符串都用引号包围。script在执行前,变量会被替换为其真正的值,因此,若变量不存在,那么不加引号的if [ $str == “what” ]会在执行前被替换为if [ == "what"]。

    使用-z "string" (string is Empty)或-n (string is Not empty)时同样需加引号,否则[ -z $a ]就可能会被替换为[ -z ]。而根据bash规则,无参数测试总是为true(?)。因此,若$a为空,那么[ -z $a ]和[ -n $a ]测试将同时成立。

    既然可以使用==,那么在需要时也可以使用!=、>、<。注意>和<都是shell特殊字符,因此需要加转义:

    [ "a" < "b" ] && echo "char a is less then char b"

    6.2 数值比较

    数值比较使用-eq、-ne、-gt、-lt、-ge、-le。

    7. 其他测试选项

        使用help test可以查看所有可用测试选型。

    8. 在当前shell环境中执行script

        source your_script

        或者

        . your_script

        以上,your_script不需要x权限。
    9. 引用命令执行结果

        两种形式:

        echo $(find . -name "*.c")

        echo `find . -name *.c`

    10. cp file file.orig

         可以用如下形式:

         cp $file{,.orig}

         $var{.a,.b,.c,.d}将被展开为

         ${var}.a ${var}.b ${var}.c ${var}.d

         逗号前后不能有空格。

  • 相关阅读:
    大三上寒假15天--第6天
    大三上寒假15天--第5天
    大三上寒假15天--第4天
    大三上寒假15天--第3天
    selenium(python)登录时账号密码错误提示语
    selenium(python)用HTMLTestRunner导出报告(断言)信息的显示
    Jmeter打开url时提示“请在微信客户端打开链接问题”
    python(unittest)报告导出(二):使用 BeautifulReport导出
    python(unittest)报告导出(一):使用HTMLTestRunner导出
    selenium+python+unittest:一个类中只执行一次setUpClass和tearDownClass里面的内容(可解决重复打开浏览器和关闭浏览器,或重复登录等问题)
  • 原文地址:https://www.cnblogs.com/byeyear/p/5425460.html
Copyright © 2011-2022 走看看