RUNOOB Linux Shell学习笔记——Shell变量

  • Shell 变量

    • Shell变量

      • 使用变量

        #!/bin/bash
        # 注意your_name与=间不能有空格
        # 变量名外面的花括号是可选的
        your_name="qinjx"
        echo $your_name
        echo ${your_name}
        
        for skill in Ada coffe Action Java; do
        	echo "I am good at ${skill}Script"
        done
        
        # 已定义的变量可以被重新定义
        # 使用变量时才需要加$,重新赋值时不需要
        your_name="tom"
        echo $your_name
        your_name="alibaba"
        echo $your_name
        
      • 只读变量

        #!/bin/bash
        # 使用readonly命令可以将变量定义为只读变量
        myUrl="https://www.google.com"
        readonly myUrl
        
      • 删除变量

        #!/bin/bash
        # 使用unset命令可以删除变量
        myUrl="http://www.google.com"
        unset myUrl
        echo $myUrl
        
      • 变量类型

        1. 局部变量:仅在当前shell实例中有效
        2. 环境变量:所有程序都能访问的变量
        3. shell变量:shell程序设置的特殊变量,一部分是环境变量,一部分是局部变量。
    • Shell字符串

      • 单引号

        单引号里的任何字符都会原样输出。

      • 双引号

        #!/bin/bash
        # 双引号里可以有变量
        your_name='runoob'
        str="Hello, I know you are \"$yourname\"!\n"
        
      • 拼接字符串

        #!/bin/bash
        your_name="runoob"
        # 使用双引号拼接
        greeting="hello, "$your_name" !"
        greeting1="hello, ${your_name} !"
        echo $greeting $greeting1
        # 使用单引号
        greeting2='hello, '$your_name' !'
        greeting3='hello, ${your_name} !' # 无法拼接出变量值
        
      • 获取字符串长度

        #!/bin/bash
        string="abcd"
        echo ${#string}	# 输出4
        expr length "$string"
        
      • 提取子字符串

        #!/bin/bash
        # 第一个字符的索引值为0
        string="runoob is a great site"
        echo ${string:1:4}	# 输出unoo 从第2个字符开始截取4个字符
        

        假设有变量 var=“http://www.aaa.com/123.htm”

        1. 删除左边字符,保留右边字符

          echo ${var#*//} #结果为www.aaa.com/123.htm
          
        2. 删除左边字符,保留右边字符

          echo ${var##*//} # 结果为123.htm
          
        3. 删除右边字符,保留左边字符

          echo ${var%/*}	# 结果是http://www.aaa.com
          
        4. 删除右边字符,保留左边字符

          echo ${var%%/*}	# 结果是http:
          
        5. 从左边第几个字符开始,及字符的个数

          echo ${var:0:5}	# 结果是http:
          
        6. 从左边第几个字符开始,直到结束

          echo ${var:7}	# 结果是www.aaa.com/123.htm
          
        7. 从右边第几个字符开始,及字符的个数

          echo ${var:0-7:3}	# 结果是123
          
        8. 从右边第几个字符开始,直到结束

          echo ${var:0-7}	# 结果是123.htm
          
      • 查找子字符串

        #!/bin/bash
        # 查找字符i或o的位置(哪个字符先出现就计算哪个)
        string="runoob is a great site"
        echo `expr index "$string" io`	# 输出4
        
    • Shell数组

      Shell仅支持一维数组。

      • 定义数组

        1. 用括号来表示数组,数组元素间用“空格”分割。
        2. 可以使用不连续的下标,而且下标的范围没有限制。
        数组名=(值1 值2 值3 。。。 值n)
        array_name=(value0 value1 value2 value3)
        array_name1=(
        value0
        value1
        value2
        value3
        )
        array_name2[0]=value0
        array_name2[1]=value1
        array_name2[2]=value2
        array_name2[3]=value3
        
      • 读取数组

        ${数组名[下标]}
        valuen=${array_name[n]}
        
        1. 使用@符号可以获取数组中的所有元素

          echo ${array_name[@]}
          
      • 获取数组长度

        # 取得数组元素的个数
        length=${#array_name[@]}
        length1=${#array_name[*]}
        # 取得数组中单个元素的长度
        lengthn=${#array_name[n]}
        
    • Shell注释

      • 多行注释

        # 为单行注释
        # 以下为多行注释格式,EOF也可以用其它符号
        :<<EOF
        ...
        ...
        EOF
        
        :<<'
        注释内容。。。
        注释内容。。。
        注释内容。。。
        '
        
        :<<!
        注释内容。。。
        注释内容。。。
        注释内容。。。
        !
        

版权声明:本文为yyjbluesword原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。