码迷,mamicode.com
首页 > 其他好文 > 详细

有规划的bash变量组

时间:2017-11-29 21:53:35      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:linux组变量

什么是数组?

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

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

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

数组的定义和引用:

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

    引用数组 

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

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

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

      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]}"

  其他定义方法

   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"

[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]}"

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

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

[root@localhost ~]# echo "${WC_NAME[*]}"
VALUE1 VALUE2 VALUE4

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

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

[root@localhost ~]# echo "${!WC_NAME[*]}"
0 1 3

查看数组中的元素的个数

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

[root@localhost ~]# echo "${#WC_NAME[*]}"
3


数组切片:

${NAME[*]:offset}

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

[root@localhost ~]# echo "${WC_NAME[*]:1}"
VALUE2 VALUE4

${NAME[*]:offset:number}

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

[root@localhost ~]# echo "${WC_NAME[*]:0:1}"
VALUE1
[root@localhost ~]# echo "${WC_NAME[*]:1:1}"
VALUE2

撤销数组:

unset NAME

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

脚本中与用户交互的变量


位置参数变量:

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

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

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


特殊变量:

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

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

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

[root@localhost ~]# 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

[root@localhost ~]# bash sum1 1 9
奇数和 : 25
偶数和 : 20

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

有规划的bash变量组

标签:linux组变量

原文地址:http://blog.51cto.com/wangchaode/2045795

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!