Linux的shell编程(二)-Shell 字符串、Shell 数组、Shell 注释

Linux的shell编程(二)-Shell 字符串、Shell 数组、Shell 注释

1、Shell 字符串

  • 字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。

  • 1)单引号

    str='this is a string'
    
    • 注意:
      • 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
      • 单引号字串中不能出现单引号(对单引号使用转义符后也不行)。
  • 2)双引号

    class='1510A'
    str="this is \"$class\"! \n"
    
    • 双引号的优点:
      • 双引号里可以有变量
      • 双引号里可以出现转义字符
  • 3)拼接字符串

    your_name="haha"
    greeting="hello, $your_name !"
    echo greeting
    
  • 4)获取字符串长度

    string="abcdef"
    echo ${#string} #输出 6
    
  • 5)提取子字符串

    • 以下实例从字符串第 2 个字符开始截取 4 个字符:
    string="this is 1511A class"
    echo ${string:1:4} # 输出 his
    
  • 6)查找子字符串

    • 查找字符 “i 或 s” 的位置:
      string="this is 1511A class"
      echo `expr index "$string" is`  #输出 3  (注意""不能去掉)
      
      • 注意:以上脚本中"`" 是反引号,而不是单引号 “’”,不要看错了哦。反引号`` 某些时候可用$()来替代。如:echo `ll` 等价于 echo $(ll)

2、Shell 数组

  • 1、说明:

    • bash支持一维数组(不支持多维数组),并且没有限定数组的大小。
    • 类似与C语言,数组元素的下标由0开始编号。
    • 获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0。
  • 2、定义数组

    • 在Shell中,用括号来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为:数组名=(值1 值2 … 值n)
      • 例如:
        array_name=(value0 value1 value2 value3)
        或者
        array_name=(
        value0
        value1
        value2
        value3
        )
        
        还可以单独定义数组的各个分量:
        array_name[0]=value0
        array_name[1]=value1
        array_name[n]=valuen
        可以不使用连续的下标,而且下标的范围没有限制。
        
  • 3、读取数组(没有也不会报数组越界异常,就是查询不出来)

    • 读取数组元素值的一般格式是:${数组名[下标]}
      • 例如:
        valuen=${array_name[n]}
        使用@或者*符号可以获取数组中的所有元素,例如:
        echo ${array_name[@]}
        
  • 4、获取数组的长度

    • 获取数组长度的方法与获取字符串长度的方法相同
      • 例如:
        # 取得数组元素的个数
        length=${#array_name[@]}
        # 或者
        length=${#array_name[*]}
        
  • 5、取得数组单个元素的长度

    lengthn=${#array_name[n]}
    

3、Shell 注释

  • 说明
    • 以"#"开头的行就是注释,会被解释器忽略。(除第一行的解释器以外)
    • sh里没有多行注释,只能每一行加一个#号。
  • 注:
    • 如果在开发过程中,遇到大段的代码需要临时注释起来,过一会儿又取消注释,怎么办呢?每一行加个#符号太费力了,可以把这一段要注释的代码用一对花括号括起来,定义成一个函数,没有地方调用这个函数,这块代码就不会执行,达到了和注释一样的效果。

你可能感兴趣的:(Linux,大数据)