定义变量
使用一个定义过的变量只需要在变量前加上美元符号即可。变量外也可以加花括号,这个是可选的,但有些情况加上花括号是为了帮助解释器识别变量的边界。例如:
your_name="Huifeng"
echo $your_name
echo ${your_name}
echo "I am good at ${skill}scripts."
建议给所有的变量加上花括号。
注意在第二次赋值的时候不能使用$,只有在使用变量的时候才能加上美元符号$。例如
your_name="Huifeng"
your_name="Ankang"
echo $your_name
可以使用readonly命令将指定的变量变为只读变量。
删除变量可以使用unset命令,例如:
unset your_name
Shell字符串
Shell字符串可以使用单引号也可以使用双引号也可以不使用引号。
str='this is a string'
单引号字符串的限制:
- 单引号里的任何字符都会原样输出,单引号中的字符串变量是无效的。
- 单引号字符串中不能出现一个单独的引号(对单引号使用转义符也不行),但可以成对出现在字符串拼接的时候使用。
双引号的优点:
- 双引号中可以有变量。
- 双引号中可以出现转义字符。
拼接字符串:
surname="Ronaldo"
firstname="Cristiano"
echo $firstname $surname
获取字符串的长度
string="abc"
echo ${#string}
提取子字符串
string="B+tree is MySql index data structure"
echo ${string:11:16}
查找子字符串
查找字符i或o的位置。
string="runoob is a great site"
echo `expr index "$string" io`
Shell数组
Shell支持一维数组,不支持多维数组,并且没有限定数组的大小。数组下标从0开始编号。获取数组中的元素要利用下标,下标可以是整数或算数表达式,其值应该大于等于0。
定义数组
在Shell中,用括号表示数组,数组元素用空格元素分隔开,定义数组的一般格式为:
数组名=(值1 值2 ... 值n)
还可以单独定义数组的各个分量
array=(value1 value2 value3)
array[0]=value4
array[2]=value5
读取数组
读取数组的一般格式为
${数组名[下标]}
可以使用@符号读取数组中的所有元素。
echo ${array[@]}
获取数组的长度:
获取数组长度的方法和获取字符串长度的方法一样
length=${#array[@]}
length=${#array[*]}
#获取数组中单个元素的长度
length=${#array[n]}
参数说明:
参数处理 | 说明 |
---|---|
$# | 传递到脚本的参数的个数。 |
$* | 以一个单字符串显示所有向脚本传递的参数。 |
$$ | 脚本运行的当前进程ID号。 |
$! | 后台运行的最后一个进程的ID号。 |
$@ | 与$*相同但使用的时候加引号并且在引号中返回每个参数。 |
$- | 显示Shell使用的当前选项。 |
$? | 显示最后命令的退出状态。0表示没有错误,其它的任何值表示有错误。 |
$与$@的区别:
只有在使用双引号的时候才会体现出来。假设脚本运行时写了三个参数1,2,3,则*等价于"1 2 3"传递了一个参数,而@等价于传递了"1", "2", "3"三个参数。
网友评论