有规划的bash变量组
什么是数组? 一个变量:里面存放多个变量,他们有各自的代号,但需要user自行定义数组元素的代号: 索引代号:将数组里面的元素由【0,1,2....n】来标识 关联代号:用户自定义的字符串来标识,只有bash4.0以上版本支持(本机不是所以无法测试)
数组的定义和引用: 定义数组:VAR=(value1 value2 value3 value4) 直接定义数组元素内容,系统会自动给予标识 引用数组 [root@localhost~]#var1=(123456) [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[*]}" VALUE1VALUE2VALUE4 引用整个数组的所有元素的索引号 ${!NAME[*]} 或者${!NAME[@]} [root@localhost~]#echo"${!WC_NAME[*]}" 013 查看数组中的元素的个数 ${#NAME[*]} 或者${#NAME[@]} [root@localhost~]#echo"${#WC_NAME[*]}" 3 数组切片: ${NAME[*]:offset} //显示包括offset数值(索引标识)所对应表示位置的元素及其后所有的元素 [root@localhost~]#echo"${WC_NAME[*]:1}" VALUE2VALUE4 ${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~]#foriin"${WC_NAME[@]}";doecho"$i";done VALUE1 VALUE2 VALUE4 $*:给出的所有位置参数的列表,当使用双引号引用时,整个参数列表被当做一个字符串 [root@localhost~]#foriin"${WC_NAME[*]}";doecho"$i";done VALUE1VALUE2VALUE4 $#:表示除了$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 "奇数和 : $sum1n偶数和 : $sum2" else echo -e "奇数和 : $sum2n偶数和 : $sum1" fi fi fi [root@localhost~]#bashsum119 奇数和:25 偶数和:20 其中 数字1 和 9 分别是脚本中的 $1 和 $2 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Angular企业级开发(4)-ngResource和REST介绍
- typescript – 如何使用angular2中的链接参数数组从子组件导
- scala – 如何解决sbt中的非jar(dll / jnilib)库依赖项?
- bash:比较两个文件的行
- angularjs – 无法使用phantomjs进行量角器测试
- python – 芹菜工作者无法连接到docker实例上的redis
- unix – 获取默认/首选文件扩展名
- [设计资源大全]Bootply:一款很棒的 Bootstrap UI 编辑工具
- WebService学习总结(二)——WebService相关概念介绍
- bash – 从Common Lisp执行shell命令