Shell编程 - 变量查遗补漏

2018-08-13  本文已影响6人  BlueSkyBlue

定义变量

使用一个定义过的变量只需要在变量前加上美元符号即可。变量外也可以加花括号,这个是可选的,但有些情况加上花括号是为了帮助解释器识别变量的边界。例如:

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}

查找子字符串
查找字符io的位置。

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"三个参数。

上一篇 下一篇

猜你喜欢

热点阅读