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` # 输出4Shell数组
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 :<<' 注释内容。。。 注释内容。。。 注释内容。。。 ' :<<! 注释内容。。。 注释内容。。。 注释内容。。。 !