shell函数实例

2 篇文章 0 订阅

shell函数

shell函数说明

在shell脚本当中,函数的应用是非常常见的,也是很有效的。对于常用的功能,我们可以编写成一个函数,然后自行调用,通过这种方式能提高代码的可读性和整体的关联性。

在linux系统本身的脚本文件中,存在着大量的循环、嵌套、函数的应用,各位可以在了解基本的循环和shell函数语法结构之后,去尝试看看系统文件的脚本编写,有助于提高运维效率。

语法

方法1:

从命令行写shell函数,函数主体中行末需要添加分号";"

[root@m01]#function fun { echo "hello shell"; }
[root@m01]#fun
hello shell
[root@m01]#
方法2:

在脚本中编写shell函数 function func01 { 函数主体 }

[root@python3 func]# sh func_hello.sh 
hello shell
这是我的第一个函数
[root@python3 func]# cat func_hello.sh 
#!/bin/bash
function func01 {
  echo "hello shell"
  echo "这是我的第一个函数"
}
func01
[root@python3 func]# 
方法3:

在脚本中编写shell函数 func01() { 函数主体 }

[root@python3 func]# sh func_hello.sh 
hello shell
这是我的第一个函数
[root@python3 func]# cat func_hello.sh 
#!/bin/bash
func02() {
  echo "hello shell"
  echo "这是我的第二个函数"
}
func02

函数的调用

#将shell函数文件添加到/etc/bashrc文件末尾,然后在命令行直接使用函数名称来调用函数,就像执行系统命令一样,且可以使用$1-$10这样的系统变量。

[root@python3 func]# tail /etc/bashrc 
......
                . "$i" >/dev/null
            fi
        fi
    done

    unset i
    unset -f pathmunge
fi
# vim:ts=4:sw=4
. /root/func/func_hello.sh
[root@python3 func]# . /etc/bashrc
[root@python3 func]# func01 
hello shell
这是我的第一个函数
[root@python3 func]# 

普通脚本中也可以调用定义了函数的库文件,并且在脚本中直接使用该函数库中的所有函数

[root@python3 func]# cat func_hello
func01() {
  echo "hello shell"
  echo "这是我的第一个函数"
}

[root@python3 func]# cat test.sh 
#!/bin/bash

. /root/func/func_hello
func01
[root@python3 func]# sh test.sh 
hello shell
这是我的第一个函数
[root@python3 func]# 

函数的传参

函数的传参和给脚本传参类似,可以直接接受脚本传入的参数,也可直接给函数传参,通过下面的实列说明函数的传参问题

从命令行执行函数,可以像使用linux命令一样,接收参数。

[root@python3 func]# func02 1 4
1 * 4 = 4
[root@python3 func]# cat func_hello
#!/bin/bash

func01() {
  echo "hello shell"
  echo "这是我的第一个函数"
}

function func02 {
 echo "$1 * $2 = $[ $1 * $2 ]" 
}
[root@python3 func]# func02 6 4
6 * 4 = 24
[root@python3 func]# 

在脚本中调用函数库文件,并且执行其中的函数,函数可通过获取而脚本的参数来给自己传参

[root@python3 func]# sh test.sh 4 5
通过在脚本中 test.sh 引入函数库文件,来掉用shell函数
hello shell
这是我的第一个函数
通过调用脚本的参数来传参: 4 5
4 * 5 = 20
调用脚本的变量
[root@python3 func]# cat test.sh 
#!/bin/bash

. /root/func/func_hello

echo "通过在脚本中 $0 引入函数库文件,来掉用shell函数"

func01

echo  "通过调用脚本的参数来传参: $*"

func02  $1 $2
[root@python3 func]# cat func_hello
#!/bin/bash

func01() {
  echo "hello shell"
  echo "这是我的第一个函数"
}

function func02 {
  echo "$1 * $2 = $(($1 * $2))" 
  echo "调用脚本的变量"
}
[root@python3 func]# 

shell函数应用

跳板机

#!/bin/bash
hostlist(){

	echo "散列主机:"
	echo -e "\t<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
	while read line
	do
		echo -e "\t|        "$line
	done<hostlist.txt
	echo -e "\t>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n"
}

memuinfo(){
cat <<EOF
        ---------------------------------
        |       1) 主机目录             |
        |       2) 使用手册             |
        |       3) 远程登陆             |
        |       h) help                 |
        ---------------------------------
EOF
}
OperInst(){
cat <<EOF
#本次跳板机只是引用shell函数做的小实验,请勿太在意其实用性,操作说明如下:
#1.主机列表在单独的一个文件中,通过一个函数来读取文件内容,并打印在屏幕中,提供管理员一个简单手抄作用
#2.使用手册简单的对jumphost.sh脚本的执行过程和功能做简单的介绍
#3.此脚本的主要功能就是通过SSH远程登陆已经对该跳板机免密登陆的主机
#4.如果您的操作出现了异常情况,请输入"h"来获得答案
#
#脚本功能说明:
#1.本次实验会更多的通过函数的调用的方式来完成各项功能,体现shell函数在shell脚本中的作用,比如:
#hostlist:     表示主机列表
#memuinfo:      功能菜单
#OperInst:     调用您看到的功能说明
#Help:          帮助你退出无聊的循环单中
EOF
}

Login(){
read -p $'请输入您需要远程的主机IP地址\n#'  IP
read -p "user login:" User
read  -s -p "password:" Pass
sshpass -p $Pass ssh $User@$IP -o StrictHostKeyChecking=no
}

Help(){
echo "欢迎您不厌其烦的来到这里,我来帮助你退出无聊的程序"
Mail=$(rpm -qa |grep mailx;echo $?)
if [ $Mail -ne 0 ]
then
	echo "安装mail插件中..."
	yum -y install mailx
	read -p $'请输入您对该脚本的意见和建议\n>>>' text
	echo $text|mail -s test 13146156766@126.com
	exit
else
	read -p $'请输入您对该脚本的意见和建议\n>>>' text
	echo $text|mail -s test 13146156766@126.com
	exit
fi
}

sshpass_install(){
num=$(rpm -qa |grep "sshpass";echo $?)
if [ $num -ne 0 ]
then
echo "正在安装所需要的插件: sshpass"
yum -y install sshpass
fi
}

	memuinfo
	trap "" HUP INT TSTP
while true
do
        read -p "请选择目录中的功能{ 1 | 2 | 3 | h }: " action
	case $action in
		3)
			sshpass_install
			read -p "您已经选择执行远程连接{ yes | no }" action
			
			if [ $action == "yes"  ];then
				Login
			fi
       			continue
		;;
		2)
			clear
			OperInst
			echo -e "\n"
			memuinfo
		;;
		1)
			clear
			hostlist
			echo -e  "\n"
			memuinfo
		;;
		h)
			Help
			echo -e "\n"
			memuinfo
		;;
		exec)
			exit
		;;
		*)
			continue
	esac

done

#主机列表文件:hostlist.txt,请自行编写一个主机列表文件

忠告:shell脚本如果需要数量掌握,离不开您对linux命令的熟悉,该怎么做你懂的,加油!
在此欢迎您发表您的看法,咱们一起学习。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
### 回答1: Linux shell编程实例是指在Linux系统下使用shell脚本语言编写的一些实例程序。这些实例程序可以帮助用户学习和掌握shell编程的基本语法和常用技巧,例如文件操作、字符串处理、流程控制、函数定义等。通过实践编写这些实例程序,用户可以提高自己的编程能力和解决问题的能力,同时也可以更好地理解Linux系统的运作机制和管理方法。 ### 回答2: Linux shell编程实例有很多,包括Shell脚本的编写、命令行参数传递、条件判断语句、循环语句、函数定义和调用、文件操作等。下面简单介绍一下其中的几个实例: 1、Shell脚本的编写 Shell脚本是一种由一系列Shell命令组成的脚本文件,其扩展名为.sh。Shell脚本可以用来完成各种自动化任务,比如批量处理文件、数据备份、系统监控和管理等。 编写Shell脚本时,需要使用一个文本编辑器,比如vi、nano或gedit等。一般情况下,开头需要指定解释器的类型,例如#!/bin/bash。 在脚本中,可以使用各种Shell命令,比如echo、grep、sed、awk等,还可以使用条件判断语句、循环语句和函数等。 2、命令行参数传递 Linux shell脚本可以通过命令行参数来控制其行为。例如,如果有一个名为test.sh的脚本,可以通过以下命令执行它: ./test.sh arg1 arg2 arg3 在脚本中,可以使用$1、$2、$3等变量来获取命令行参数的值,例如: #!/bin/bash echo "第一个参数为:$1" echo "第二个参数为:$2" echo "第三个参数为:$3" 执行上述脚本,将会依次输出命令行参数的值。 3、条件判断语句 条件判断语句用于在脚本中根据不同的条件执行不同的操作,比如判断一个文件是否存在、判断一个变量的值等。 常用的条件判断语句有if、elif和else。示例代码如下: #!/bin/bash if [ -e /etc/passwd ] then echo "文件/etc/passwd存在" else echo "文件/etc/passwd不存在" fi 上述脚本中,-e用于判断文件是否存在,如果存在则输出“文件/etc/passwd存在”,否则输出“文件/etc/passwd不存在”。 4、循环语句 循环语句用于在脚本中重复执行某些操作,比如遍历一个目录下的所有文件、读取一个文件中的所有行等。 常用的循环语句有for和while。示例代码如下: #!/bin/bash for file in $(ls /etc) do echo $file done 上述脚本中,for循环用于遍历/etc目录下的所有文件,并依次输出它们的文件名。 5、函数定义和调用 函数是一组完成特定任务的命令集合。在Linux shell编程中,可以定义函数来封装一些常用的操作,使得脚本更加模块化和可读性更好。 示例代码如下: #!/bin/bash function hello() { echo "Hello, $1!" } hello "world" 上述脚本中,定义了一个名为hello的函数,用于输出“Hello, world!”。 6、文件操作 Linux shell编程可以通过各种Shell命令来进行文件操作,比如创建、复制、移动、重命名、删除等。 常用的文件操作命令有touch、cp、mv、rm等。示例代码如下: #!/bin/bash touch test.txt # 创建一个名为test.txt的文件 cp test.txt test.bak # 复制test.txt文件为test.bak mv test.bak test_new.txt # 将test.bak重命名为test_new.txt rm test.txt # 删除test.txt文件 上述脚本中,通过touch命令创建一个test.txt文件,然后通过cp命令复制它为test.bak,再通过mv命令将test.bak重命名为test_new.txt,最后通过rm命令删除test.txt文件。 总之,Linux shell编程是非常重要且实用的技能,可以极大地提高工作效率和自动化运维能力。掌握Linux shell编程实例有助于提升个人技能和职业竞争力。 ### 回答3: Linux Shell编程实例涉及到的话题非常广泛,可以是脚本编写、命令行处理、文本处理、文件操作、网络编程、系统管理、移植等等方面。这里我就列举几个典型实例。 1. Shell脚本编写 Shell脚本编写是Linux Shell编程的基础。我们可以用Shell编写自动化脚本,快速完成一些操作,提升工作效率。比如,我们可以编写一个脚本来自动安装应用程序、配置服务器、备份数据、部署代码等等。Shell脚本具有易读易写、可移植性强、可扩展等特点,能够极大地提高开发和管理工作效率。 2. 命令行处理 命令行处理是Linux Shell编程的另一个重要方面。我们可以使用命令行处理来提高工作效率,比如,我们可以使用find命令来查找某个文件;使用grep命令来查找特定文本内容;使用awk和sed等命令进行文本处理;使用sort和uniq等命令来对文件进行排序和去重等等。 3. 系统管理 Linux Shell编程可以用于系统管理,提高系统管理工作效率。比如,我们可以使用Shell脚本来监控服务器状态、定时执行脚本任务、自动部署系统更新等。Shell脚本不仅能够提高管理工作效率,还能够减少手动操作的错误率。 4. 网络编程 Shell编程还可以实现网络编程,通过Shell脚本实现网络通信和数据交换。比如,我们可以使用curl命令来获取网页内容;使用ftp和scp等命令进行文件传输;使用telnet命令进行远程登录等等。 总之,Linux Shell编程的应用非常广泛,可以满足不同的需求。我们可以结合实际需求进行学习和实践,掌握Shell编程的技术,提高工作效率和编程能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lebron_zhb

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值