LINUX--shell

函数

格式:

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 ${array0}

a

获取第二个元素:

echo ${array1}

b

获取第三个元素:

echo ${array2}

c

添加元素:

array3=d # echo ${array\*}

a b c d

添加多个元素:

array+=(e f g) # echo ${array\*}

a b c d e f g

删除第一个元素:

unset array0

删除会保留元素下标

echo ${array\*}

b c d e f g

删除数组:

unset array

示例 1:讲 seq 生成的数字序列循环放到数组里面

#!/bin/bash

for i in $(seq 1 10);

do

arraya=$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)测试

相关推荐
硅基手札9 分钟前
SPI技术系列 12 · SPI 设备驱动实战
linux·驱动开发·单片机·嵌入式硬件·mcu·性能优化·系统架构
chu_bingzhi16 分钟前
GNU 汇编器
服务器·gnu
不悔哥26 分钟前
ESP32上跑 Linux: 乐鑫给 ESP32-S31开放了官方 BSP
linux·嵌入式硬件·开源
syagain_zsx31 分钟前
WebSocket 教程:websocketpp 写 echo 服务端
linux·网络·c++·websocket·网络协议·工具库
北京阿尔泰科技厂家32 分钟前
阿尔泰SC5061八串口联网服务器技术解析与工程应用指南
服务器·物联网·串口服务器·串口通讯·远程监测·自动化控制·工业测试测量
爬也要爬着前进33 分钟前
Prometheus通过Nginx-vts-exporter模块监控nginx服务
运维·nginx·prometheus
无足鸟ICT40 分钟前
【RHCA+】_etc_yum.repos.d_文件名.repo
linux·运维·centos
骑着蜗牛撵大象32741 分钟前
字节序、TLV 到 netlink:Linux 网络消息的编解码全链路
linux·网络·php·etl·序列化·字节序·tlv
tianyuanwo44 分钟前
RPM Spec中Name: %{?scl_prefix}xxx中增加宏定义的设计原理
linux·服务器·rpm·scl
cc_瀚海知行1 小时前
工具调用 6|助手什么时候该停下来?
java·服务器·前端·人工智能·python·ai