函数
格式:
func() {
command
}
function 关键字可写,也可不写。
示例 1:
#!/bin/bash
func() { #定义函数
echo "Hello $1"
}
func world #执行主文件
# bash test.sh
Hello world
数组
数组是相同类型的元素按一定顺序排列的集合。
格式:
array=(元素 1 元素 2 元素 3 ...)
用小括号初始化数组,元素之间用空格分隔。
定义方法 1:初始化数组
array=(a b c)
定义方法 2:新建数组并添加元素
array[下标]=元素 定义方法
3:将命令输出作为数组元素
array=($(command))
取所有元素:
# echo ${array[*]} # *和@ 都是代表所有元素
a b c
获取元素下标:
# echo ${!a[@]}
0 1 2
获取数组长度:
# echo ${#array[*]}
3
获取第一个元素:
# echo ${array[0]}
a
获取第二个元素:
# echo ${array[1]}
b
获取第三个元素:
# echo ${array[2]}
c
添加元素:
# array[3]=d # echo ${array[*]}
a b c d
添加多个元素:
# array+=(e f g) # echo ${array[*]}
a b c d e f g
删除第一个元素:
# unset array[0]
# 删除会保留元素下标
# echo ${array[*]}
b c d e f g
删除数组:
# unset array
示例 1:讲 seq 生成的数字序列循环放到数组里面
#!/bin/bash
for i in $(seq 1 10);
do
array[a]=$i
let a++
done
echo ${array[*]}
# bash test.sh
1 2 3 4 5 6 7 8 9 10
实验:
for ping测试子网段的主机
网段由用户输入,例如用户输入192.168.101 ,则ping 192.168.101.125 — 192.101.131
UP: /tmp/host_up.txt
Down: /tmp/host_down.txt
(1)创建脚本文件
[root@localhost scripts]# vim ip_add.sh
(2)编辑脚本文件
#!/bin/bash
##############################################################
# File Name: ip_add.sh
# Version: V1.0
# Author: Gao_XY
# Email: Gao_XY@163.com
# Organization:https://blog.csdn.net/ens33?type=blog
# Created Time : 2024-12-23 14:34:24
# Description:
##############################################################
address='192.168.101.' #定义主机位ip变量
for i in {1..254} #循环,定义网络位ip变量
do
ip=${address}$i #定义ip
if ping -c 2 -i 0.1 $ip &>/dev/null#测试能否ping通,-c ping2次,-i 间隔0.3秒。将结果放入黑洞
then
echo $ip "ip address is up">>/tmp/host_up.txt#通过的结果追加至/tmp/host_up.txt文件中
else
echo $ip "ip address is down">>/tmp/host_down.txt#不通过的结果追加至/tmp/host_down.txt文件中
fi
let i++ #没执行循环一次,网络位就累加一次直至结束
done
(3)测试