Shell编程自动化之if、for、while和函数

这篇具有很好参考价值的文章主要介绍了Shell编程自动化之if、for、while和函数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、if语句

1.单分支格式

if [ 条件判断式 ]; then
    当条件判断成立时,执行的命令内容
fi                 
if [ 条件判断式 ]
then
    当条件判断成立时,执行的命令内容
fi  

2.双分支格式

if [ 条件判断式 ]; then
    当条件判断成立时,执行的命令内容
else
    当条件判断不成立时,执行的命令内容
fi 

3.多分支格式

if [ 条件判断式 ]; then
    当条件判断成立时,执行的命令内容
elif [ 条件判断式2 ]; then
    当条件判断2成立时,执行的命令内容
else
    当上面条件判断都不成立时,执行的命令内容
fi 

4.实例测试

通过ping测试局域网内,主机是否在线

dtt@debian:~/shell$ cat if_test.sh 
#!/bin/bash

ip=192.168.2.111

if ping -c1 $ip &>/dev/null
then
	echo "$ip is up"
else
	echo "$ip is down"
fi

dtt@debian:~/shell$ chmod 755 if_test.sh 
dtt@debian:~/shell$ ./if_test.sh 
192.168.2.111 is up
dtt@debian:~/shell$ 

二、for循环

1.格式

for  变量名  in  取值列表
do
	执行命令内容
done

2.实例测试

通过ping测试局域网内,192.168.2网段全部主机是否在线,并将是否在线结果分开存储到文件。

for_test.sh

#!/bin/bash
ip1="192.168.2."

for n in {1..254}
do
	ip2=$(echo $n)
	ip=$ip1$ip2

	# echo $ip
	
	if ping -c1 $ip &>/dev/null
	then
		echo "$ip is up"
		echo "$ip" &>> host_up.txt
	else
		echo "$ip is down"
		echo "$ip" &>> host_down.txt
	fi
done
三、while循环

1.格式

while   [ 条件判断式 ]
do
  当上述条件判断式为真时,执行命令语句
done   

2.实例测试

dtt@debian:~$ cat while_test.sh 
#!/bin/bash

n=1
sum=0

while [ $n -lt 5 ]
do
	#echo $n
	let sum+=n
	let n+=1
done

echo "sum=$sum"
dtt@debian:~$ chmod 755 while_test.sh 
dtt@debian:~$ ./while_test.sh 
sum=10
dtt@debian:~$ 

continue表示当满足条件时跳出本次循环,继续后续循环执行。

break表示当满足条件时直接结束本次循环。

四、函数

1.函数格式

function 函数名(){
    函数体
    return 返回值
}
function 函数名{
    函数体
    return 返回值
}
函数名(){
    函数体
    return 返回值
}

2.实例测试

判断文件夹中是否存在ip.txt文件

dtt@debian:~/shell$ cat function_test.sh 
#!/bin/bash

file="ip.txt"
#定义函数
function test(){
	for file_name in `ls`
	do
		# echo $file_name

		if [ "$file_name" == "$file" ];then
			echo "$file文件存在"
		fi
	done
}

#执行函数
test

dtt@debian:~/shell$ chmod 755 function_test.sh 
dtt@debian:~/shell$ ./function_test.sh 
ip.txt文件存在
dtt@debian:~/shell$ 

3.有关函数执行的基础概念

  • shell函数必须先定义,再执行,shell脚本自上而下加载。

  • 执行shell函数,直接写函数名字即可,无需添加其他内容。

  • 函数体内定义的变量,称为局部变量,使用local关键字,定义局部变量。

  • 函数体内需要添加return语句,作用是退出函数,且赋予返回值给调用该函数的程序,也就是shell脚本(在shell脚本中,定义并使用函数,shell脚本执行结束后,通过$?获取其返回值)。

  • return语句和exit不同:

    return是结束函数的执行,返回一个退出值或返回值。

    exit是结束shell环境,返回一个退出值或返回值给当前的shell。

  • 函数如果单独写入一个文件里面,需要使用source读取。

4.函数传参数

函数定义和执行,很多都是分开在不同的文件中,函数写在一个文件中,只定义不执行,另外一个脚本,读取该函数文件,且加载该函数。

下面测试,func2.sh调用加载func1.sh文件,并向func1.sh内的get函数传4个参数文章来源地址https://www.toymoban.com/news/detail-794653.html


dtt@debian:~/shell$ cat func1.sh 
#!/bin/bash


get(){
	echo "传入的参数个数共$#个"
	
	for arg in $@
	do
		echo "$arg"
	done
}

dtt@debian:~/shell$ cat func2.sh 
#!/bin/bash


# 条件测试,加载函数
[ -f /home/dtt/shell/func1.sh ] && source /home/dtt/shell/func1.sh || exit

# 执行函数
get $1 $2 $3 $4

dtt@debian:~/shell$ bash func2.sh 10 20 30 40
传入的参数个数共4个
10
20
30
40
dtt@debian:~/shell$ 


到了这里,关于Shell编程自动化之if、for、while和函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Shell自动化日志维护脚本

    简介: 系统日志对于了解操作系统的运行状况、故障排除和性能分析至关重要。然而,长期积累的日志文件可能变得庞大,影响系统性能。在这篇文章中,我们将介绍一个自动化的解决方案,使用 Bash 脚本来监控和维护系统日志文件,以确保它们的大小合理,避免磁盘爆满,

    2024年02月10日
    浏览(35)
  • shell脚本自动化部署tomcat

    在一个月黑风高的晚上,在公司把程序打包好后,发给现场,结果又被告知不能登录命令行界面部署程序(tomcat部署),只能提供一个shell脚本实现自动化部署,于是拿出我0.5年的开发经验,10分钟写了个shell脚本给到现场 我们先想想tomcat部署一个程序需要经过几个步骤: 1

    2024年02月10日
    浏览(36)
  • Shell脚本——流量探测(自动化运维)

    目的    自动  捕获 指定IP或端口 的流量 生成日志,实现 流量 探测功能 准备    Root 用户权限下才能运行tcpdump脚本 优势   Liunx系统自带,无需安装其他组件,捕获准确度高 缺点   不能同时检测多个IP流量,效率低 重点         日志文件   touch  /home/node1/scripts/t

    2024年02月16日
    浏览(32)
  • 【shell】交互式自动化执行命令

    sftp 登陆并传输文件时需要手动输入密码 通过 expect 脚本模拟用户输入来与命令交互, 根据命令的输出提示, 来执行相应的操作, 来实现自动化 expect 给变量赋值用 set 变量名 \\\"变量值\\\" 获取今天 : set today [clock format [clock seconds] -format %Y-%m-%d] 获取昨天 : set yesterday [clock format [expr

    2024年02月09日
    浏览(35)
  • shell自动化脚本,启动、停止应用程序

    准确的讲/etc下的rc.local文件是rc.d文件中rc.local文件的软链接,找到rc.d下的rc.local文件,添加可执行选项。如果没有该文件可以自己创建。 要想你的脚本文件开机自启动还需要用到rc-local.service这个服务。

    2024年02月03日
    浏览(45)
  • ansible相比shell脚本自动化有什么优势

    Ansible自动化与Shell脚本自动化相比,具有以下几个显著的优势: 轻量级与无需代理 :Ansible的一个关键优势在于其轻量级和无需在被控制服务器上安装任何代理或客户端的特点。这极大地简化了部署和维护的流程,降低了复杂性和出错的可能性。而Shell脚本通常需要在每台服

    2024年04月25日
    浏览(36)
  • shell脚本——服务器巡检(自动化运维)

     目的   自动 获取集群内 多个主机 的内存、磁盘、cpu等信息 生成日志  准备    VMware虚拟主机IP在同一个网段(互相能ping通)             虚拟主机都有公钥免登录            修改主机IP  vi/etc/sysconfig/netwoek-scripts/ifcfg-ens160            设置主机名 hostnamectl set-ho

    2024年02月15日
    浏览(38)
  • 基于 jmeter 和 shell 的接口性能自动化

    目录 前言: 1. 总体需求 2. 实现流程 3.准备工作 4.具体实现 4.1 用例执行 主流程脚本 4.2 服务器监控 监控脚本: 服务器监控脚本 4.3 生成 html 报告 html 样式表 发邮件脚本 基于JMeter和Shell的接口性能自动化是一种有效的方法,可以帮助测试团队提高测试效率和准确性。JMeter作为

    2024年02月15日
    浏览(44)
  • Shell脚本入门实战:探索自动化任务与实用场景

    引言 Shell脚本作为一种强大的自动化工具,在现代操作系统中具有广泛的应用。无论是简单的文件操作,还是复杂的系统管理,Shell脚本都能提供高效、快速的解决方案。在本文中,我们将探索Shell脚本的基础知识,并通过实战场景示例,一起深入了解Shell脚本编程。 1. Shell脚

    2024年02月02日
    浏览(33)
  • DevOps自动化平台开发之 Shell脚本执行的封装

    基于如下技术栈开发DevOps平台 Spring Boot Shell Ansible Git Gitlab Docker K8S Vue  1、spring boot starter的封装使用 2、Shell脚本的编写 3、Ansible 脚本的编写 4、Docker 的使用与封装设计 本篇介绍如何使用Java封装Linux命令和Shell脚本的使用 将其设计成spring boot starter maven依赖pom文件 具体的封装

    2024年02月15日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包