有规划的bash变量组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有规划的bash变量组相关的知识,希望对你有一定的参考价值。

什么是数组?

一个变量:里面存放多个变量,他们有各自的代号,但需要user自行定义数组元素的代号:

索引代号:将数组里面的元素由【0,1,2....n】来标识

关联代号:用户自定义的字符串来标识,只有bash4.0以上版本支持(本机不是所以无法测试)

数组的定义和引用:

    定义数组:VAR=(value1 value2 value3 value4) 直接定义数组元素内容,系统会自动给予标识

    引用数组 

[[email protected] ~]# var1=(1 2 3 4 5 6)
[[email protected] ~]# echo "${var1[1]}"
2
[[email protected] ~]# echo "${var1[0]}"
1
[[email protected] ~]# echo "${var1[5]}"
6

注意:数组元素之间拿空格隔开

注意:引用数组时,加${} ,[]:里面的内容是标识符

      VAR1=([0]="value1" [2]="value2" [4]="value3") 定义时连同标识一起定义,没由定义的标识其元素内容默认为空值

[[email protected] ~]# VAR1=([0]=value1 [2]=value2 [3]=value3)
[[email protected] ~]# echo "${VAR1[0]}"
value1
[[email protected] ~]# echo "${VAR1[2]}"
value2
[[email protected] ~]# echo "${VAR1[3]}"
value3
[[email protected] ~]# echo "${VAR1[1]}"

  其他定义方法

   declare命令

      -a to make NAMEs indexed arrays (if supported)

将其后的变量名称声明为索引数组,如果支持

      -A to make NAMEs associative arrays (if supported)

将其后的变量名声明为关联数组,如果支持

分别定义法

    

        WC_NAME[0]="VALUE1"

    WC_NAME[1]="VALUE2"

    WC_NAME[3]="VALUE4"

[[email protected] ~]#    WC_NAME[0]="VALUE1"
[[email protected] ~]#      WC_NAME[1]="VALUE2"
[[email protected] ~]#      WC_NAME[3]="VALUE4"
[[email protected] ~]# echo "${WC_NAME[0]}"
VALUE1
[[email protected] ~]# echo "${WC_NAME[2]}"

引用整个数组中的所有元素:

${NAME[*]}    或者${NAME[@]}

[[email protected] ~]# echo "${WC_NAME[*]}"
VALUE1 VALUE2 VALUE4

引用整个数组的所有元素的索引号

${!NAME[*]}   或者${!NAME[@]}

[[email protected] ~]# echo "${!WC_NAME[*]}"
0 1 3

查看数组中的元素的个数

${#NAME[*]}   或者${#NAME[@]}

[[email protected] ~]# echo "${#WC_NAME[*]}"
3


数组切片:

${NAME[*]:offset}

//显示包括offset数值(索引标识)所对应表示位置的元素及其后所有的元素

[[email protected] ~]# echo "${WC_NAME[*]:1}"
VALUE2 VALUE4

${NAME[*]:offset:number}

//显示包括offset数值所对应表示位置的元素及其后共number个数的值

[[email protected] ~]# echo "${WC_NAME[*]:0:1}"
VALUE1
[[email protected] ~]# echo "${WC_NAME[*]:1:1}"
VALUE2

撤销数组:

unset NAME

----------------------------------------------------------------------------------------------

脚本中与用户交互的变量


位置参数变量:

$0:命令的本身,对于脚本而言,就是脚本的路径

$1,$2,...$N;脚本后面通过命令行给脚本传递的命令行参数

N>9时,引用该位置变量需要加{}即${10}


特殊变量:

[email protected]:给出的所有位置参数的列表,当使用双引号引用时,每个参数作为单独的字符串存在

[[email protected] ~]# for i in "${WC_NAME[@]}";do echo "$i"; done
VALUE1
VALUE2
VALUE4

$*:给出的所有位置参数的列表,当使用双引号引用时,整个参数列表被当做一个字符串

[[email protected] ~]# for i in "${WC_NAME[*]}";do echo "$i"; done
VALUE1 VALUE2 VALUE4

$#:表示除了$0,外,脚本里参数的个数

如:我们编写一个求任意俩个整数之间奇数和偶数和的脚本

#!/bin/bash

#

if [ $# -ne 2 ];then

echo "Must input two parameter"

exit 6

else

inter1=$1

inter2=$2

sum1=0

sum2=0

if [[ "$inter1" =~ [^[:digit:]] ]] || [[ "$inter2" =~ [^[:digit:]] ]];then

echo "They shoud be integers"

else

if [ $inter1 -gt $inter2 ];then

exchange=$inter1

inter1=$inter2

inter2=$exchange

fi

judgment=$[inter1%2]

for i in $(seq $inter1 2 $inter2);do

sum1=$[sum1+i]

done

for j in $(seq $[inter1+1] 2 $inter2);do

sum2=$[sum2+j]

done

if [ $judgment -eq 1 ];then

echo -e "奇数和 : $sum1\n偶数和 : $sum2"

else

echo -e "奇数和 : $sum2\n偶数和 : $sum1"

fi

fi

fi

[[email protected] ~]# bash sum1 1 9
奇数和 : 25
偶数和 : 20

其中 数字1 和 9 分别是脚本中的 $1 和 $2

以上是关于有规划的bash变量组的主要内容,如果未能解决你的问题,请参考以下文章

玩转Bash变量

玩转Bash变量

Linux bash基础特性二

sh Bash的代码片段

bash 脚本在变量赋值时崩溃

JMeter接口测试-模块控制器