![](https://csdnimg.cn/release/download_crawler_static/781072/bg3.jpg)
例如:将当前工作目录的全路径名存放到变量dir中,输入以下命令行:
$ dir=`pwd`
另一种形式是:$(命令表)。上面的命令行也可以改写为:
$ dir=$(pwd)
2
.数组
bash只提供一维数组,并且没有限定数组的大小。类似与C语言,数组元素的下标由0开始编号。获取数
组中的元素要利用下标。下 标 可以是整数或算术表达式,其值应大于或等于0。用 户 可以使用赋值语句对数组变
量赋值。对数组元素赋值的一般形式是:数组名[下标]=值,例如:
$ city[0]=Beijing
$ city[1]=Shanghai
$ city[2]=Tianjin
$
也可以用declare命令显式声明一个数组,一般形式是:
declare -a 数组名
读取数组元素值的一般格式是:
${数组名[下标]}
例如:
$ echo ${city[0]}
Beijing
一个数组的各个元素可以利用上述方式一个元素一个元素地赋值,也可以组合赋值。定义一个数组并为
其赋初值的一般形式是:
数组名=(值1 值2 ... 值n)
其中,各个值之间以空格分开。
例如:
$ A=(this is an example of shell script)
$ echo ${A[0]} ${A[2]} ${A[3]} ${A[6]}
this an example scrīpt
$ echo ${A[8]}
$
由于值表中初值共有7个,所以A的元素个数也是7。A[8]超出了已赋值的数组A的范围,就认为它是一个
新元素,由于预先没有赋值,所以它的值是空串。
若没有给出数组元素的下标,则数组名表示下标为0的数组元素,如city就等价于city[0]。
使用*或@做下标,则会以数组中所有元素取代[*]或[@]。
3
.变量引用
除了上面所介绍的变量引用方式外,在bash中还有其它的引用方式。归纳起来,有效的变量引用表达式
有以下形式:
$name ${name#pattern}
${name} ${name##pattern}
${name[n]} ${name % pattern}
${name[*]} ${name %% pattern}
${name [@]} ${#@}
${name:-word} ${$#*}
${name:=word} ${# name }
${name:?word} ${# name[*]}
${name:+word} ${#name[@]}
(1)表达式$name表示变量name的值,若变量未定义,则用空值替换。
(2)表达式${name}将被变量name的值替换。用花括号括起name,目的在于把变量名与后面的字符分隔
开,避免出现混淆。替换后花括号被取消。
(3)${name[n]}表示数组变量name中第n个元素的值。
(4)表达式${name[*]}和${name[@]}都表示数组name中所有非空元素的值,每个元素的值用空格分开。
如果用双引号把它们都括起来,那么二者的含义就有区别:对于"${name[*]}",它被扩展成一个词(即字符串),
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn