zoukankan      html  css  js  c++  java
  • 【转】shell学习笔记(三)——引用变量、内部变量、条件测试、字符串比较、整数比较等

    1、env显示当前的环境变量 

    2、PS1='[u@h w A] $' 可以设置bash的命令与提示符。

    3、echo $$ 显示当前bash的PID号

    4、echo $?显示上一条指令的回传值(指令成功回传值为0,其他为非零)
    5、unset name 取消变量的定义

    6、定义变量语法:

                 变量名=变量值
                  [注]:等号两边不能留空格,否则代表变量包含空格;若变量本身就包含空格,则整个字符串都要用双引号括起来。

    7、引用变量:

                    $变量名    或   ${变量名}(强调变量)
           为了区分变量名与命令名,建议所有的变量名都用大写字母表示

    8、export命令可以将一个局部变量提供给shell执行的其他命令使用:

    export 变量名
    export 变量名=变量值

    9、内部变量

    $?:命令执行后返回的状态(0为正确执行;非0为出错) 可用于检查上一个命令执行是否正确
    $$:当前进程的进程号
    $!:最近后台进程号
    $#:位置参数的数量,$1表示第一个自变量
    $0:当前执行的进程名
    $1-$9:脚本参数
    $*:所有位置参数的内容
     
    10、条件测试:
    –格式:test conditions  也可以写作 [  conditions ]
      test在以下4种情况下使用:
    –字符比较
    –两个数值的比较
    –文件操作,例如文件是否存在及文件的状态等
    –逻辑操作,可以进行and/or,与其他条件联合使用
      test用于计算一个条件表达式的值,经常在条件语句和循环语句中用来判断某些条件是否满足,可以使用很多shell的内部操作符。
    11、字符串操作符

    常用字符串属性条件判断

    string_1=string_2 

    如果string_1和string_2两个字符串相等则返回真,否则返回假;
    string_1!= string_2 如果string_1和string_2两个字符串不相等则返回真,否则返回假;
    -z string 如果字符串string的长度为0则返回真,否则返回假;
    -n string 如果字符串string长度不为0则返回真,否则返回假;
    string 如果字符串string非空返回真,否则返回假。

       通常与test结合使用,如:

    #!?bin/bash

    string_1=a string_2=b

    test string_1 = string_2

    echo $?

          运行应该返回 1 

    12、整数操作符:计算整数表达式

     

    常用的整数关系条件判断
    mum_1 –eq num_2 如果num_1和num_2相等则返回真,否则返回假;
    mum_1 –ne num_2 如果num_1不等于num_2则返回真,否则返回假;
    mum_1 –gt num_2 如果num_1大于num_2则返回真,否则返回假;
    mum_1 –lt num_2 如果num_1小于num_2则返回真,否则返回假;
    mum_1 –le num_2 如果num_1小于等于num_2则返回真,否则返回假;
    mum_1 –ge num_2 如果num_1大于等于num_2则返回真,否则返回假;

     

     例如:

    #!/bin/bash

    n1=20

    n2=30

    $n1 -eq $n2 ]

    echo $?

    [ $n1 -gt $n2 ]

    echo $?

          输出结果分别为 1 和 1

    13、文件操作符

     

    常用的文件属性条件判断
    -f  fn 如果fn存在且fn为普通文件则返回真,否则返回假。
    -b  fn 如果fn存在且fn为块设备则返回真,否则返回假。
    -e  fn 如果fn存在则返回真,否则返回假。
    -d  fn 如果fn 存在且fn为目录则返回真,否则返回假。
    -r  fn 如果fn存在且fn可读则返回真,否则返回假。
    -w  fn 如果fn存在且fn可写则返回真,否则返回假。
    -x  fn 如果fn存在且fn可执行则返回真,否则返回假。
    -O  fn 如果fn存在且被当前用户拥有则返回真,否则返回假。
    -L  fn 如果fn存在且fn为符号链接则返回真,否则返回假。

     

         用test检测,用法同字符操作类似 例如: test -w file

    14、逻辑操作符

     

    常用的逻辑操作符属性条件判断

    a (逻辑与)格式为”condition1 –a condition2”,若两个条件都为真,则结果为真

    o

     
    (逻辑或):格式为”condition1 –o condition2”,若两个条件中有一个为真,则结果为真
    ! (逻辑非):格式为”!condition”.当condition为真时,结果为假,当condition为假时,结果为真

     

           连接两个表达式 :如 [ test string1 = string2 -a test -w file ]

    15、shell中的引号:

    1、单引号(‘):单引号括起来的字符(包括特殊字符)都作为普通字符。

    2、双引号:由双引号括起来的字符,除$、、’、和”这几个字符仍是特殊字符并保留其特殊功能,其余字符仍作为普通字符对待。

     [注]:
      $:用其后指定的变量值来代替这个变量
      :转义字符,其后面的字符为普通字符。通常需要加的只有4个字符, $、、’、和”。
      对于”号,如果没加,则与前一个“号匹配
    3、反引号(`):   与键盘上的~同一个键上的符号。反引号括起来的字符串被shell解释为命令行,执行时,shell首先执行该命令行,并以它的标准输出结果取代整个反引号部分。

    16、通配符

         *:代表任何字符串。例:f*匹配以f打头的任意字符串。
       文件名前的圆点(.)和路径名中的的斜线(/)必须显式匹配。
      例:”*”不能匹配.file,只有”.*”才可以匹配.file。
         ?:代表任何单个字符。
         [ ]:代表指定的一个字符范围,只要文件名中[ ]位置处的字符在[ ]中指定的范围之内,那么这个文件名就与这个模式串匹配。
      例:f[a-d] 或f[abcd]
    符号类型 说明
    * 当前目录下的所有文件的名称
    *Text 当前目录下所有文件中包含Text的文件
     [ab-dm]* 当前目录下所有以a、b、c、d、m开头的文件的名称
     [ab-dm]?
    当前目录下所有以a、b、c、d、m开头的且后面只跟
    一个字符的文件的名称
    /usr/bin/?? 目录/usr/bin下的所有名称为两个字符的文件的名称

     17、调试执行 sh -x abc.sh 调试执行abc.sh 。sh -n abc.sh 不执行脚本,只检测语法错误。

     18、exit 退出程序执行。正常退出,返回值为0;非0表示非正常退出。例如:exit 0

     19、awk命令文件内容提取 例如:检测提取root用户 awk -F: '$3==0 {print $1}' /etc/passwd 其中-F更改分隔符

  • 相关阅读:
    JS函数防抖与函数节流
    AJAX问题 XMLHttpRequest.status = 0是什么含义
    通过JS如何获取IP地址
    关于URL编码
    报错Unexpected token u
    css文本超出2行就隐藏并且显示省略号
    At_speed_test
    Logic Bist Arch
    Logic BIST
    DMA-330(二)
  • 原文地址:https://www.cnblogs.com/xiongyunqi/p/3735826.html
Copyright © 2011-2022 走看看