[root@localhost~]#var1=(123456) [root@localhost~]#echo"${var1[1]}" 2 [root@localhost~]#echo"${var1[0]}" 1 [root@localhost~]#echo"${var1[5]}" 6@H_301_0@注意:数组元素之间拿空格隔开 @H_301_0@注意:引用数组时,加${},[]:里面的内容是标识符 @H_301_0@VAR1=([0]="value1" [2]="value2" [4]="value3") 定义时连同标识一起定义,没由定义的标识其元素内容默认为空值
[root@localhost~]#VAR1=([0]=value1[2]=value2[3]=value3) [root@localhost~]#echo"${VAR1[0]}" value1 [root@localhost~]#echo"${VAR1[2]}" value2 [root@localhost~]#echo"${VAR1[3]}" value3 [root@localhost~]#echo"${VAR1[1]}"@H_301_0@ 其他定义方法
@H_301_0@ declare命令 @H_301_0@ -a to make NAMEs indexed arrays (if supported) @H_301_0@ 将其后的变量名称声明为索引数组,如果支持 @H_301_0@ -A to make NAMEs associative arrays (if supported) @H_301_0@ 将其后的变量名声明为关联数组,如果支持 @H_301_0@分别定义法 @H_301_0@ WC_NAME[0]="VALUE1" @H_301_0@ WC_NAME[1]="VALUE2" @H_301_0@ WC_NAME[3]="VALUE4"
[root@localhost~]#WC_NAME[0]="VALUE1" [root@localhost~]#WC_NAME[1]="VALUE2" [root@localhost~]#WC_NAME[3]="VALUE4" [root@localhost~]#echo"${WC_NAME[0]}" VALUE1 [root@localhost~]#echo"${WC_NAME[2]}"@H_301_0@引用整个数组中的所有元素: @H_301_0@ ${NAME[*]} 或者${NAME[@]}
[root@localhost~]#echo"${WC_NAME[*]}" VALUE1VALUE2VALUE4@H_301_0@引用整个数组的所有元素的索引号 @H_301_0@ ${!NAME[*]} 或者${!NAME[@]}
[root@localhost~]#echo"${!WC_NAME[*]}" 013@H_301_0@查看数组中的元素的个数 @H_301_0@ ${#NAME[*]} 或者${#NAME[@]}
[root@localhost~]#echo"${#WC_NAME[*]}" 3@H_301_0@
@H_301_0@数组切片: @H_301_0@ ${NAME[*]:offset} @H_301_0@ //显示包括offset数值(索引标识)所对应表示位置的元素及其后所有的元素
[root@localhost~]#echo"${WC_NAME[*]:1}" VALUE2VALUE4@H_301_0@${NAME[*]:offset:number} @H_301_0@ //显示包括offset数值所对应表示位置的元素及其后共number个数的值
[root@localhost~]#echo"${WC_NAME[*]:0:1}" VALUE1 [root@localhost~]#echo"${WC_NAME[*]:1:1}" VALUE2@H_301_0@撤销数组: @H_301_0@ unset NAME @H_301_0@---------------------------------------------------------------------------------------------- @H_301_0@脚本中与用户交互的变量 @H_301_0@
@H_301_0@位置参数变量: @H_301_0@ $0:命令的本身,对于脚本而言,就是脚本的路径 @H_301_0@ $1,$2,...$N;脚本后面通过命令行给脚本传递的命令行参数 @H_301_0@ N>9时,引用该位置变量需要加{}即${10} @H_301_0@
@H_301_0@特殊变量: @H_301_0@ $@:给出的所有位置参数的列表,当使用双引号引用时,每个参数作为单独的字符串存在
[root@localhost~]#foriin"${WC_NAME[@]}";doecho"$i";done VALUE1 VALUE2 VALUE4@H_301_0@$*:给出的所有位置参数的列表,当使用双引号引用时,整个参数列表被当做一个字符串
[root@localhost~]#foriin"${WC_NAME[*]}";doecho"$i";done VALUE1VALUE2VALUE4@H_301_0@ $#:表示除了$0,外,脚本里参数的个数 @H_301_0@如:我们编写一个求任意俩个整数之间奇数和偶数和的脚本 @H_301_0@#!/bin/bash @H_301_0@# @H_301_0@if [ $# -ne 2 ];then @H_301_0@echo "Must input two parameter" @H_301_0@exit 6 @H_301_0@else @H_301_0@inter1=$1 @H_301_0@inter2=$2 @H_301_0@sum1=0 @H_301_0@sum2=0 @H_301_0@if [[ "$inter1" =~ [^[:digit:]] ]] || [[ "$inter2" =~ [^[:digit:]] ]];then @H_301_0@echo "They shoud be integers" @H_301_0@else @H_301_0@if [ $inter1 -gt $inter2 ];then @H_301_0@exchange=$inter1 @H_301_0@inter1=$inter2 @H_301_0@inter2=$exchange @H_301_0@fi @H_301_0@judgment=$[inter1%2] @H_301_0@for i in $(seq $inter1 2 $inter2);do @H_301_0@sum1=$[sum1+i] @H_301_0@done @H_301_0@for j in $(seq $[inter1+1] 2 $inter2);do @H_301_0@sum2=$[sum2+j] @H_301_0@done @H_301_0@if [ $judgment -eq 1 ];then @H_301_0@echo -e "奇数和 : $sum1\n偶数和 : $sum2" @H_301_0@else @H_301_0@echo -e "奇数和 : $sum2\n偶数和 : $sum1" @H_301_0@fi @H_301_0@fi @H_301_0@fi
[root@localhost~]#bashsum119 奇数和:25 偶数和:20@H_301_0@其中 数字1 和 9 分别是脚本中的 $1 和 $2