Linux01-BASH函数编程42

一、函数

1、function: 功能,函数

2、函数:把某个特定的功能或应该独立执行的代码封装成独立的功能并取个名字,使用时调用它即可;

3、函数特征:结构化编程,不能独立运行,需要调用时执行,可以被多次调用;

二、函数编程和应用

1、定义一个函数,方法一:

function FUNCNAME {

command(独立执行的命令)

}

2、定义一个函数,方法二:

FUNCNAME() {

command

}

3、函数自定义执行状态返回值:return #

#表示:0-255

4、接受参数的函数:./SHELLNAME.sh m n

参数$1: m

参数$2: n

如1:

#!/bin/bash

#

SHOWMENU() {

cat << EOF

d|D)show disk usages.

m|M)show menory usages.

s|S)show swap usages.

q|Q)quit.

EOF

}

SHOWMENU

read -p "Your are choice:" CHOICE

until [ $CHOICE == ‘q‘ -o $CHOICE == ‘Q‘ ];do

case $CHOICE in

d|D)

df -hP;;

m|M)

free -m | grep "^Mem";;

s|S)

free -m | grep "^Swap";;

*)

read -p "Your are choice again:" CHOICE;;

esac

SHOWMENU

read -p "Your are choice:" CHOICE

done

如2:

#!/bin/bash

#

ADDUSER() {

USERNAME=user20

if ! id -u $USERNAME &> /dev/null;then

useradd $USERNAME

echo $USERADD | passwd --stdin $USERADD &> /dev/null

return 0

else

return 1

fi

}

ADDUSER

if [ $? == 0 ];then

echo "user add finished."

else

echo "user add failuer."

fi

如3:

#!/bin/bash

#

TWOSUM() {

echo $[$1+$2]

}

for I in {1..10};do

let J=$[$I+1]

echo "$I plus $J `TWOSUM $I $J`" ---->传递2个参数

done

练习,写一个脚本:

判定192.168.0.200-192.168.0.254之间的主机哪些在线。要求:

1、使用函数来实现一台主机的判定过程;

2、在主程序中来调用此函数判定指定范围内的所有主机的在线情况。

方法一:

#!/bin/bash

#

PING() {

for I in {1..10};do

if ping -c 1 -w 1 192.8.8.$I &> /dev/null;then

echo "192.8.8.$I is up."

else

echo "192.8.8.$I is down."

fi

done

}

PING

方法二:

#!/bin/bash

#

PING() {

if ping -c 1 -w 1 $1 &> /dev/null;then

echo "$1 is up."

else

echo "$1 is down."

fi

}

for I in {1..10};do

PING 192.8.8.$I

done

方法三:

#!/bin/bash

#

PING() {

if ping -c 1 -w 1 $1 &> /dev/null;then

return 0

else

return 3

fi

}

for I in {1..10};do

PING 192.8.8.$I

if [ $? == 0 ];then

echo "192.8.8.$I is up."

else

echo "192.8.8.$I is down."

fi

done

写一个脚本:使用函数完成

1、函数能够接受一个参数,参数为用户名;

判断一个用户是否存在

如果存在,就返回此用户的shell和UID;并返回正常状态值;

如果不存在,就说此用户不存在;并返回错误状态值;

2、在主程序中调用函数;

扩展1:在主程序中,让用户自己输入用户名后,传递给函数来进行判断;

扩展2:在主程序中,输入用户名判断后不退出脚本,而是提示用户继续输入下一个用户名;

如果用户输入的用户不存在,请用户重新输入;但如果用户输入的是q或Q就退出;

参考:

#!/bin/bash

#

USER() {

if id -u $1 &> /dev/null;then

echo "$1 is UID and SHELL:`grep "^$1" /etc/passwd | cut -d: -f3,7`"

return 0

else

echo "Not user $1"

return 5

fi

}

read -p "Your input username:" USERNAME

until [ $USERNAME == q -o $USERNAME == Q ];do

USER $USERNAME

if [ $? == 0 ];then

read -p "Your input username:" USERNAME

else

read -p "Your input username again:" USERNAME

fi

done

Linux01-BASH函数编程42

时间: 2024-10-10 17:20:46

Linux01-BASH函数编程42的相关文章

Docker 基础知识-入门篇

1. Docker简介和KVM区别 1.1 docker的三大理念 构建 运输 运行 ps:有点类似于java代码,一次构建到处运行 1.2 docker结构 相关说明:image: 和虚拟机的镜像类似container: 用镜像创建的实例repository: 类似于yum仓库docker client: 命令行输入的docker命令docker server: 启动的docker进程 1.3 docker和kvm的区别 1.虚拟机需要hypervisor这个中间层来进行支持,上面跑的每一个虚

Bash脚本之循环

在编写程序的时候有可能需要将一段代码重复的执行0次.1次或多次,在这种时候仅仅只用顺序执行结构就显得有些捉襟见肘了,所以需要一个好的循环结构,而一个好的循环结构必须要包括两个最重要的环节,第一个是进入循环的条件,当满足这个条件的时候就开始循环:第二个是退出循环的条件,也就是当满足这个条件的时候结束循环.来进行循环的命令大概有以下四个: for:遍历指定的列表: while:根据逻辑判断的结果: until:根据逻辑判断的结果: select:死循环,利用循环机制提供选择列表: 下面分别对这些命令

bash shell学习 01(配置和启动脚本)

bash是 Bourne Again Shell简称 ,从unix系统的sh发展而来 查看当前shellecho $SHELL查看系统支持的shellcat /etc/shells cd /binls -la *sh 一. bash shell的配置变量可分为自定义变量和环境变量他们作用范围不同set 可以查看所有变量set|more 查看 enter一行一行查看set|less enter换行 pagedown换页 q退出 env只能查看环境变量 bash shell的设置方式1.通过自定义变

马哥2016全新Linux+Python高端运维班-Linux 网络基础管理,包管理,bash脚本练习

本周作业内容: 1.请描述网桥.集线器.二层交换机.三层交换机.路由器的功能.使用场景与区别.     集线器:又称"HUB"主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上.它工作于OSI(开放系统互联参考模型)参考模型第一层,即"物理层".     二层交换机:工作于OSI模块的第2层(数据链路层),故称为二层交换机.可以识别数据包中的MAC地址信息,根据MAC地址进行转发,并将这些MAC地址与对应的端口记录

Linux后门入侵检测工具,附bash漏洞解决方法[转载]

转自:http://blog.jobbole.com/77663/ 官网 ClamAV杀毒软件介绍 ClamAV是一个在命令行下查毒软件,因为它不将杀毒作为主要功能,默认只能查出您计算机内的病毒,但是无法清除,至多删除文件.ClamAV可以工作很多的平台上,但是有少数无法支持,这就要取决您所使用的平台的流行程度了.另外它主要是来防护一些WINDOWS病毒和木马程序.另外,这是一个面向服务端的软件. 下载ClamAV安装包 ClamAV的官方下载地址为http://www.clamav.net/d

linux杂记(十)?what is BASH Shell

first,what is shell?其实只要是碰过计算机的,对于OS(Operation System操作系统,不管是linux.unix.windows)有点概念的人大多都听过这个名词,因为只要有OS那么就离不开Shell.其实Shell就是将我们输入的指令与kernel(核心)的沟通,使kernel可以控制hardware硬件(例如声卡,网卡,显卡)来正确无误工作. 基本上,替我们工作的是[hardware],控制硬件的是[kernel],而我们user则是利用[shell]控制一些ke

bash脚本(二)

for循环 for VAR in LIST; do statements ... done LIST列表: 1.直接给出 2.数值列表 {start..end},如{1..10} seq LAST seq FIRST LAST seq FIRST STEP LAST,如seq 1 2 10,会读取到13579 3.特殊变量$#,[email protected],$* 4.通过命令引用获取的参数列表,如($(grep 'bash$' /etc/passwd | cut -d: -f3)) 5.通

运维自动化之ansible playbook一键化解决大量主机bash更新问题

今天发现有bash漏洞,但我这里近1000台服务器,为了方便.省时间,觉得使用ansible安装bash更新包,下面分享一下我的安装方法. 1.安装的playbook的内容 19:00:03 # cd /etc/ansible [email protected]:/etc/ansible 19:00:06 # cat update_bash.yml  --- - hosts: "{{ host }}"   remote_user: "{{ user }}"   ga

Bash Shell 小试牛刀

一.终端打印 [[email protected] ~]# echo welcome to bash! welcome to bash! [[email protected] ~]$ echo 'welcome to bash!' welcome to bash! [[email protected] ~]$ echo "welcome to bash\!" welcome to bash\! (注意,双引号内不能直接用特殊符号,需要用转义符\) [[email protected]