zoukankan      html  css  js  c++  java
  • ubuntu---shell脚本:if

    一、基本结构化命令if-then语句格式:

    if  command
    then
        command
    fi

    解释:bash shell的if语句会运行if后面的那个命令。
    如果该命令的退出状态码是0(该命令成功运行),位于then部分的命令就会被执行。
    如果该命令的退出状态码是其他值,then部分的命令就不会被执行。
    fi语句用来表示if-then语句到此结束。

    二、test命令
    Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。

    if-then语句不能测试命令退出状态码之外的条件,test命令提供了在if-then语句中测试不同条件的途径。
    如果test命令中列出的条件成立,test命令就会退出并返回状态码0。

    test命令的格式:

    test condition

    condition是test命令要测试的一系列参数和值。当用在if-then语句中时,test命令看起来是这样的。

    if test condition
    then
        command
    fi

    另一种写法:

    if [condition]
    then
        command
    fi

    第一个方括号和第二个方括号之前必须加上一个空格,否则会报错
    test命令可以判断三类条件:
    1)数值比较
    2)字符串比较
    3)判断文件
      test File1 –ef File2 两个文件具有同样的设备号和i结点号
      test File1 –nt File2 文件1比文件2 新
      test File1 –ot File2 文件1比文件2 旧
      test –b File 文件存在并且是块设备文件
      test –c File 文件存在并且是字符设备文件
      test –d File 文件存在并且是目录
      test –e File 文件存在
      test –f File 文件存在并且是正规文件
    ...

    @https://blog.csdn.net/weixin_36586564/article/details/78843172


    三、tr 命令

    tr = translate的简写。

    tr 命令用于转换或删除文件中的字符。
    tr 指令从标准输入设备读取数据,经过字符串转译后,将结果输出到标准输出设备。
    tr 命令主要用来从标准输入中通过替换或删除操作进行字符转换,然后打印输出到标准输出。
    可以通过管道或重定向标准输入来获得 tr的输入数据。
    tr 对输入数据可以进行三种操作: 字符替换、压缩重复字符和删除字符。
      tr命令格式:

    tr [OPTION] String1 [String2]  

    1.在tr中string1和string2用来指示一个字符集合范围。可以是下面的一些形式(一般要加双引号):
         1) [a-d] : [a-d]表示abcd,常用的有[a-z]、[A-Z]、[0-9]等,[bfgh]表示 bfgh。可以加上单或双引号
         2) [C*n] : 表示字符 C 重复出现指定次数n。因此,[F*3]表示FFF。一般只能出现在 string2中。
         3) nn : 三位八进制数,对应有效的 ASCII 字符。一般用于表示特定的控制字符。

    2.选项"-c": 表示用在输入数据中出现,但是不包含在 string1 字符范围内的字符组成的集合,代替原来的 string1。
    在 tr 的三类操作中都可以使用选项"-c"。

      eg: echo "adcfghg" | tr -cd fgca  
      // 将显示 acfgg  输入数据中不包含在 string1 中的字符范围 是"dh"  ,所以,实际上只是删除了字符"dh" 

    3.tr 用于字符替换: 只需要同时给出 string1 和 string2,可以需要不指定特别的选项。
       1) Usage: tr string1 string2
         输入数据中属于 string1 字符范围内的字符都将被替换,string1 中的第 n 个字符被替换为 string2 中的第 n个字符。

        eg: echo "adcfgh" | tr adcgw vbnle  
        // 将显示 vbnflh (v 替换 a,b 退回 d  ,n 替换 c,l 替换 g...) 

         2) 一般 string1 和 string2 的字符个数应该相同。如果字符个数不同,分为两种情况:
         ① string1 的字符个数少于 string2 的字符个数: string2 种额外的字符将被忽略。  
         ② string1 的字符个数多于 string2 的字符个数,又可分为两种情况:
          ·对于 BSD 系列的系统: tr 会重复 string2 中的最后一个字符,直到补齐到 string1 一样的长度。
          ·对于 System V 的系统 : tr 将截去 string1 中超长的部分。
           GUN tr 使用 BSD 方式,如果想使用 System V 方式,需要指定选项"-t"。
           eg: echo "addcfghg" | tr  adcgw vbn     // 将打印 vbbnfnhn
               echo "addcfghg" | tr  -t adcgw vbn  // 将打印 vbbnfghg
      

     3) tr 的字符替换操作主要用途有 大小写转换等。
          eg: tr [a-z] [A-Z] < video.txt  // 将文件 video.txt 中的所有小写字母转换成大写字母
              tr ":" "11" < /etc/passwd  // 将 passwd 文件的域分隔符改为"11"即"TAB"
     

     4.tr 用于删除字符: 使用选项"-d"。  
      1) Usage: tr -d string1  
       输入数据中所有在 string1 中出现过的字符都将被删除。
      2) echo "This is a note !"| tr -d [:space:] // 将打印 Thisisanote  即删除所有空格  
         tr -cd "[a-z][A-Z][ ]"  

     5.tr 用于压缩重复字符: 使用选项"-s"。压缩操作可以单独进行,也可以在替换操作或删除操作之后进行,因而分成 3 种情况。

    @blog.sina.com.cn/s/blog_54dd80920102v1wc.html


     echo $dir | tr "." " "
    (1) | 运算符
    管道符号,是unix一个很强大的功能,符号为一条竖线:"|"。
    用法:

    command 1 | command 2

    它的功能是把第一个命令command 1执行的结果作为command2的输入传给command 2,例如: ls -s | sort -nr

    (2)Usage: tr string1 string2
       输入数据中属于 string1 字符范围内的字符都将被替换,string1 中的第 n 个字符被替换为 string2 中的第 n个字符。
    eg: echo "adcfgh" | tr adcgw vbnle  // 将显示 vbnflh (v 替换 a,b 退回 d  ,n 替换 c,l 替换 g...)

        echo $dir | tr "." "
    "
    
  • 相关阅读:
    oracle创建函数和调用存储过程和调用函数的例子(区别)
    oracle存储过程的创建和使用
    oracle恢复已删除数据
    存储管理工具StorageExplorer的基本使用
    Azure CLI对ASM,ARM资源的基本操作
    Windows系统安装Azure CLI
    Azure Powershell对ASM资源的基本操作
    Azure Powershell对ARM资源的基本操作
    安装Windows Azure Powershell
    Linux虚拟机之间实现密钥登陆
  • 原文地址:https://www.cnblogs.com/carle-09/p/12597110.html
Copyright © 2011-2022 走看看