Shell数组的增删改查

                           Shell数组的增删改查                            

shell数组的定义及取值:

a=(1 2 3)
[ root@bogon tmp]# echo ${a[*]} 
1 2 3
[ root@bogon tmp]# echo ${a[@]}
1 2 3
 
增加数组元素:
[ root@bogon tmp]# a[3]=4
[ root@bogon tmp]# echo ${a[@]}
1 2 3 4
 
修改数组元素:
[ root@bogon tmp]# a[0]=freddy  
[ root@bogon tmp]# echo ${a[@]}
freddy 2 3 4
 
清空数组:
[ root@bogon tmp]# unset a
[ root@bogon tmp]# echo ${a[@]}
 
删除数组的指定值:
[ root@bogon tmp]# echo ${a[@]}
1 2 3
[ root@bogon tmp]# unset a[0]  
[ root@bogon tmp]# echo ${a[@]}
2 3
 
取指定数组范围:
[ root@bogon tmp]# a=(1 2 3 4 5)
#从下标1开始取,取3位。
[ root@bogon tmp]# echo ${a[@]:1:3}  
2 3 4
 
把数组 值3替换成freddy字符串:
[ root@bogon tmp]# echo ${a[@]/3/freddy}
1 2 freddy 4 5
[ root@bogon tmp]#
 
统计数组中的值得个数:
a = (a b c)
[ root@bogon tmp]# echo ${#a[*]}
3
 
 统计数组内的元素个数:
[ root@slavedb test]# a=(1 2 3)
[ root@slavedb test]# echo ${#a[@]}
3
 
统计变量的长度是多少:
[ root@slavedb test]# b=1234
[ root@slavedb test]# echo ${#b}
4
 
取数组内的单个元素:
[root@slavedb test1]# a=(a b c)
[root@slavedb test1]# echo ${a[0]}
a
[root@slavedb test1]# echo ${a[1]}    
b
[root@slavedb test1]# echo ${a[2]}  
c

取出数组内所有的值:
[root@slavedb array]# echo ${array[@]}
1 2 3

[root@slavedb array]# echo ${array[*]}
1 2 3

截取数组元素的一部分:
[root@slavedb array]# array=(1 2 3 4 5)
[root@slavedb array]# echo ${array[@]:1:3}
2 3 4
[root@slavedb array]#

修改数组,并没有真正的修改:
[root@slavedb array]# echo ${array[@]/2/888}
1 888 3 4 5
[root@slavedb array]# array=(1 2 3 4 5)     
[root@slavedb array]# echo ${array[@]}      
1 2 3 4 5
[root@slavedb array]# echo ${array[@]/2/888}
1 888 3 4 5
[root@slavedb array]#

数组key=value的定义方法:
[root@slavedb array]# array=([1]=one [2]=two [3]=three)
[root@slavedb array]# echo ${array[@]}
one two three
[root@slavedb array]# echo ${array[1]}
one
[root@slavedb array]# echo ${array[3]}
three

数组常用的定义方法:
[root@slavedb array]# array=($(pwd) $(w) $(uptime))
[root@slavedb array]# echo ${array[0]}             
/tmp/array
[root@slavedb array]#


 

转载于:https://www.cnblogs.com/tangshengwei/p/5446315.html

shell脚本编程的学生宿舍信息管理系统通常是一个命令行程序,它用于管理学生的住宿数据,如姓名、学号、寝室号、床位号和手机号等。这种系统的基本功能可能包含以下几个部分: 1. **增加记录** (Add): 用户可以输入新学生的详细信息,如 `add student ZhangSan 1001 201 13812345678`。 2. **删除记录** (Delete): 根据学号或其他唯一标识符找到并移除特定学生的信息,如 `delete 1001`。 3. **修改记录** (Modify): 更新已有的学生信息,如 `modify ZhangSan new_phone 13900132456`。 4. **查询记录** (Query): 搜索并显示指定条件下的学生信息,如 `search by name ZhangSan` 或 `list all beds in 201`. 5. **遍历和排序** (List): 展示所有宿舍信息,按某种顺序排列,比如按学号排序 `list students by sno`. 编写这样的脚本,需要利用bash的条件判断语句 (`if...else`) 和循环 (`for...done`),以及文件操作(例如读取和写入到文本文件或数据库)。由于shell脚本本身结构相对简洁,处理复杂逻辑可能会通过函数封装来简化。 这是一个非常简化的伪代码样例: ```sh #!/bin/bash # 存储宿舍数据的数组 declare -A dormitory # 添加学生 function add_student() { read -p "请输入学生信息(格式: 姓名 学号 寝室号 床位号 手机号): " details # 分割输入并添加至数组 } # 删除学生 function delete_student() { read -p "请输入要删除的学生学号: " if [[ $dormitory[$1] ]]; then rm -f "${dormitory:$1}" else echo "未找到该学生" fi } # ...其他类似功能的实现 ... # 主循环 while true; do echo "请选择操作:" echo "1. 添加学生" echo "2. 删除学生" # 更多选项... read choice case $choice in 1) add_student;; 2) delete_student;; *) echo "未知选项";; esac done ``` 注意,这个例子并没有实际的文件存储或持久化功能,真实的实现会考虑将数据存储在一个持久化的文件中,或者使用更专业的数据库解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值