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个参数

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$

相关文章
|
30天前
|
Shell Linux C语言
Shell 函数
10月更文挑战第4天
21 7
|
1月前
|
存储 运维 监控
自动化运维:使用Shell脚本简化日常任务
【9月更文挑战第35天】在IT运维的日常工作中,重复性的任务往往消耗大量的时间。本文将介绍如何通过编写简单的Shell脚本来自动化这些日常任务,从而提升效率。我们将一起探索Shell脚本的基础语法,并通过实际案例展示如何应用这些知识来创建有用的自动化工具。无论你是新手还是有一定经验的运维人员,这篇文章都会为你提供新的视角和技巧,让你的工作更加轻松。
40 2
|
3月前
|
测试技术 索引 Python
Python接口自动化测试框架(基础篇)-- 函数与内置函数
本文详细介绍了Python中的函数概念,包括自定义函数、参数传递、局部与全局变量,以及内置函数的使用,还扩展了匿名函数、return和yield、exec()、vars()、iter()、map()、zip()、reversed()和sorted()等高级函数和概念。
30 1
Python接口自动化测试框架(基础篇)-- 函数与内置函数
|
3月前
|
数据采集 运维 Devops
探索Python编程之美:从基础到进阶自动化运维的变革之路:从脚本到DevOps
【8月更文挑战第30天】在数字化时代的浪潮中,编程已经成为一门重要的技能。Python以其简洁明了的语法和强大的功能,成为了许多初学者的首选编程语言。本文将通过浅显易懂的语言,带领读者从Python的基础语法出发,逐步深入到面向对象编程、网络爬虫开发以及数据分析等高级应用,旨在帮助初学者构建扎实的编程基础,并激发他们进一步探索编程世界的热情。文章不仅分享实用的编程技巧,还将探讨如何将编程知识应用于解决实际问题,以期培养读者的问题解决能力和创新思维。
|
3月前
|
机器学习/深度学习 运维 Ubuntu
自动化运维:使用Ansible简化日常任务探索Python编程之美:从基础到进阶
【8月更文挑战第28天】在快速迭代的软件开发周期中,运维工作的效率至关重要。本文将介绍如何使用Ansible这一强大的自动化工具来简化日常的运维任务,通过代码示例展示如何配置和使用Ansible,以及它如何帮助提升工作效率和减少人为错误。文章将深入讨论Ansible的核心概念,包括Playbooks和Tasks,并探讨如何利用这些概念进行高效的系统管理。 【8月更文挑战第28天】在数字时代的浪潮中,编程已成为一门艺术和科学。本文将通过Python语言的镜头,带领读者踏上一段从零基础到熟练运用的旅程。我们将一起探索Python的简洁语法、强大库支持以及它在数据科学、网络开发等领域的应用。无论你
|
3月前
|
存储 测试技术 数据库
Python接口自动化测试框架(练习篇)-- 函数编程(一)
本文通过实际的编程练习,讲解了面向过程编程的概念和应用,包括如何定义函数、处理文件读写以及实现用户注册功能,最终将这些过程封装成函数,体现了Python作为脚本语言的面向过程编程特性。
26 2
|
3月前
|
测试技术 Python
Python接口自动化测试框架(练习篇)-- 函数编程(二)
本文通过具体的编程练习,深入探讨了Python中的函数编程,包括如何定义函数、使用参数和返回值,以及函数式编程的技巧和应用,如使用lambda表达式和递归函数解决实际问题。
25 1
|
3月前
|
运维 监控 Shell
自动化运维之宝:编写高效的Shell脚本
【8月更文挑战第31天】在运维的世界里,Shell脚本是一把瑞士军刀,它让日常任务变得简单而高效。本文将通过浅显易懂的语言和实际案例,带你领略Shell脚本的魅力,并教你如何打造属于自己的自动化工具箱。无论你是初学者还是资深运维,这篇文章都将为你打开一扇窗,让你看到不一样的风景。让我们一起探索Shell脚本的世界吧!
|
3月前
|
Shell Linux 程序员
在Linux中, 什么是shell函数?如何使用它们?
在Linux中, 什么是shell函数?如何使用它们?
|
4月前
|
Shell Linux
Linux Shell 脚本入门教程:开启你的自动化之旅
Shell是一种计算机程序,它充当了用户与操作系统之间的接口。在Linux系统中,Shell允许用户通过命令行界面(CLI)来控制计算机。Shell脚本则是一种使用Shell语言编写的脚本,它可以自动执行一系列的命令,帮助用户实现任务自动化,提高工作效率。
134 2