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

    技术2022-07-11  76

    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

    变量类型

    局部变量:仅在当前shell实例中有效环境变量:所有程序都能访问的变量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”

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

    echo ${var#*//} #结果为www.aaa.com/123.htm

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

    echo ${var##*//} # 结果为123.htm

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

    echo ${var%/*} # 结果是http://www.aaa.com

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

    echo ${var%%/*} # 结果是http:

    从左边第几个字符开始,及字符的个数

    echo ${var:0:5} # 结果是http:

    从左边第几个字符开始,直到结束

    echo ${var:7} # 结果是www.aaa.com/123.htm

    从右边第几个字符开始,及字符的个数

    echo ${var:0-7:3} # 结果是123

    从右边第几个字符开始,直到结束

    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 值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]}

    使用@符号可以获取数组中的所有元素

    echo ${array_name[@]}

    获取数组长度

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

    Shell注释

    多行注释

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