有规划的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

时间: 2024-10-12 06:17:02

有规划的bash变量组的相关文章

其他文本处理命令以及bash变量中的一些字符串的处理方法

其他的文本处理命令: 1.wc 2.cut命令: cut - 在文件的每一行中提取片断 注意:能够被cut修剪的文件或数据内容,一般是具有某种特定格式或结构的文本文件或数据内容: 如 :/etc/passwd 格式:cut [OPTION]... [FILE]... 常用选项: -d, --delimiter=DELIM:指定在实施修剪操作时所使用的字段分隔符号,默认是TAB(空白字符): -f, --fields=LIST:根据指定的字段分隔符号来指定要保留的字段编号列表: LIST可以称为字

linux之bash变量

bash变量之高级部分 1.变量扩展 ${变量名称}                     变量扩展                          例如:${filename} $(命令)                            命令替换                          例如:$(ls /) $((算术式))                       算式扩展                          例如:$((9+9)) 变量扩展:一种简易的条

Bash变量

1.变量类型 Bash变量有两种:局部变量和环境变量 局部变量:局部变量的范围仅在创建它的Shell中有效 环境变量:能为创建它的Shell及其派生子进程所用的变量,也经常被称为全局变量,一般约定环境变量为大些,它们是那些可以通过内置命令export导出的变量. 2.变量命名 变量名必须以字母或下划线开始,其余部分则可以由字符.数字或下划线构成.变量名中不能含有点字符.. 大小写敏感 给变量赋值时,不要在等号两边留下空格.格式为: #variable=value 当变量值含有空格时,必须使用引号

bash变量作用域问题

queue_exist=0 ps -ef | grep ${PROCESS_PARM} | grep java |  awk '{print $2}' | while read pid do queue_exist=1 break; done queue_exist=1 这句就是不起作用,出了循环之后还是等于0. 印象中bash变量都是全局变量. 查了下,原来在bash shell中管道是新起了一个进程的,相当于 queue_exist=1这句是定义在subshell中了,subshell中的变

bash特性小结&bash变量

时间就是金钱 效率就是生命 一.bash编程 |---------------| |应用           | |-----------|   | |壳|库函数 |    | //可以直接针对系统调用编程 |---------------| |系统调用       | |---------------| |内核           | |---------------| |硬件           | |---------------|     现在程序开发更重视程序开发的速度-因此Pytho

bash变量类型

bash变量类型:本地变量:varname=value,作用域为整个shell进程局部变量:local varname=value,作用域为当前代码段环境变量:export varnmae=value,作用域为当前shell进程及其子进程位置变量:$1, $2, $3 -.特殊变量:$?,上一个命令执行状态返回值

Shell基础-Bash变量-用户自定义变量

变量设置规则: 变量名称可以由字母.下划线和数字组成,但是不能由数字开头. 在Bash中变量的默认类型是字符串类型,若需要进行数值运算,则需指定变量类型为数值型.变量用等号链接,且两边不能有空格.若需要有空格,则用单引号或者双引号包括. Bash变量中“\”为转义符. 变量的值可以叠加,不过变量需要用双引号包括“$变量名”或者${变量名}. 如果把命令的结果作为变量值赋予变量,则需要使用反引号``或者$()包含命令

Bash变量及条件判断使用记录

bash变量类型: 环境变量 本地变量(局部变量) 位置变量 特殊变量 本地变量:作用域为整个bash进程 VARNAME=VALUE 局部变量:作用域为当前代码段 local VARNAME=VALUE 环境变量:作用域为当前shell进程及其子进程 export VARNAME=VALUE 位置变量: $1, $2,... 特殊变量: $?:上一个命令状态返回值 $#:参数的个数 $*:参数列表 [email protected]:参数列表 $0:输出当前执行脚本的文件名 撤销变量: uns

Shell和bash变量类型

Shell 是面向过程的 (bash为例) 变量是进程的变量,进程结束,变量消失. bash变量类型:     环境变量     本地变量(局部变量):     位置变量     特殊变量 本地变量: set  VARNAME=VALUE      作用域为整个bash进程 局部变量:      local VARNAME=VALUE 作用域为当前代码段 环境变量:作用域为当前shell进程及其子进程 export VARNAME=VALUE or: VARNAME=VALUE export V