shell数组

本文介绍了Bash脚本中数组的定义、初始化及各种操作方法,包括如何获取数组元素、修改数组内容、统计数组长度等,并通过具体示例展示了while循环和for循环的应用。

Bash中还可以使用数组变量,其赋值有两种:

(1) name = (value1 ... valuen) 此时下标从0开始
(2) name[index] = value

数组下标的范围没有任何限制,同时也不必使用连续的分量.


<!-- / icon and title --><!-- message -->
$ A=(a b c def)

==================================================
$ echo ${A[@]} //取全部元素
a b c def

=================================================

$ echo ${A[0]}//取第一个元素
a

=================================================

//取得数组元素的个数
$echo ${#A[@]}
4
$echo ${#A[*]}
4
$ echo ${#A[3]}//取得元素3的长度
$

==================================================

$A[3]=yaoshuyin //将第三个元素重新赋值
$echo ${A[@]}
a b c yaoshuyin

==================================================
//清除变量
$unset A
$echo ${A[@]}
$

==================================================

//清空变量,即将值变为空
$A=
$echo ${A[@]}
$
==================================================

A=B
B=C
unset $A 事实上所取消的变量是 B 而不是 A


=======================示例 while循环========================

#建立数组
arrSource=("arrJobs.php" "arrSubHangye.php" "arrFirst.php" )

arrDest=("buildhr" /
"buildtrain/htdocs" /
"bankhr" /
"healthr" /
"elehr" /
)

#取数组无元素个数
lenArrSource=${#arrSource[*]}
lenArrDest=${#arrDest[*]}


#循环列出数组元素
i=0
while [ $i -lt $lenArrSource ]
do
echo ${arrSource[$i]}
let i++
done


i=0
while [ $i -lt $lenArrDest ]
do
<!-- / message -->
echo ${arrDest[$i]}
let i++
done


=======================示例: for循环===============================

#源文件
arrSource=("/home/800hr/htdocs/login_jump.php")

#目标网站
arrDest=(ithr elehr buildhr bankhr healthr ctvhr chenhr mechr clothr cneduhr 56hr tourhr foodhr greenhr cnlawhr waimaohr)

for outer in ${arrSource[*]} #${arrSource[*]} 是数组中的所有元素
do
for inner in ${arrDest[*]}
do
echo "ln -s $outer /home/${inner}/campus/"
done
done
Shell编程中,数组是一种非常有用的数据结构,可用来存储一组相关数据,并且可以根据下标来获取或修改数据。其定义、使用和操作方法如下: ### 定义 Shell数组是一个元素集合,它把有限个元素(变量或字符内容)用一个名字来命名,然后用编号对它们进行区分。这个名字就称为数组名,用于区分不同内容的编号就称为数组下标。组成数组的各个元素(变量)称为数组的元素,有时也称为下标变量。shell支持数组变量,它可以同时保存多个值,数组提供了一种对一组变量进行分组的方法 [^2][^3][^4]。 常见的定义方式有以下几种: - **直接定义**:通过 `array_name=(value1 value2 value3 ...)` 的方式定义数组。例如: ```bash my_array=("apple" "banana" "cherry") ``` 这里定义了一个名为 `my_array` 的数组,包含三个字符串元素。 - **逐个赋值**:可以先声明数组,再逐个为数组元素赋值。例如: ```bash my_array[0]="apple" my_array[1]="banana" my_array[2]="cherry" ``` ### 使用方法 - **访问数组元素**:可以使用 `${array_name[index]}` 的形式访问数组中的特定元素,其中 `index` 是元素的下标,下标从 0 开始。例如,要访问上面定义的 `my_array` 中的第二个元素(下标为 1),可以使用以下代码: ```bash echo ${my_array[1]} ``` 这将输出 `banana`。 - **访问所有元素**:使用 `${array_name[@]}` 或 `${array_name[*]}` 可以访问数组中的所有元素。例如: ```bash echo ${my_array[@]} ``` 这将输出 `apple banana cherry`。 ### 操作方法 - **获取数组长度**:可以使用 `${#array_name[@]}` 或 `${#array_name[*]}` 来获取数组的长度,即数组中元素的个数。例如: ```bash echo ${#my_array[@]} ``` 这将输出 `3`。 - **数组切片**:使用 `${array_name[@]:start:length}` 的形式可以获取数组的切片,其中 `start` 是起始下标,`length` 是要获取的元素个数。例如,要获取 `my_array` 中从第二个元素开始的两个元素,可以使用以下代码: ```bash echo ${my_array[@]:1:2} ``` 这将输出 `banana cherry`。 - **数组元素修改**:可以直接通过下标来修改数组中的元素。例如,将 `my_array` 中的第二个元素修改为 `date`,可以使用以下代码: ```bash my_array[1]="date" echo ${my_array[@]} ``` 这将输出 `apple date cherry`。 - **数组元素删除**:使用 `unset` 命令可以删除数组中的元素或整个数组。例如,要删除 `my_array` 中的第二个元素,可以使用以下代码: ```bash unset my_array[1] echo ${my_array[@]} ``` 这将输出 `apple cherry`。如果要删除整个数组,可以使用 `unset my_array`。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值