shell脚本--函数的使用

本文介绍了Shell脚本中的函数使用,包括函数入门、带参数的函数及跨脚本调用函数的实例。通过示例,演示了如何计算两个数字的和,以及如何在不同脚本间调用函数。此外,还提供了练习题,要求依次打印出/var/log目录下所有日志文件的行数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、shell函数入门程序

#!/bin/bash

# 函数入门

function test() {
	echo "welcome to shell function"
}

test

注意:调用函数的时候,直接函数名调用即可

 

2、shell函数带参数

写一个接收两个数字参数的函数,计算和并输出结果

#!/bin/bash

# 接收两个参数,求和,并输出结果

function add() {
	if [ $# -ne 2 ];then
		echo "参数个数不为2"
		exit 1
	else
		echo "$1+$2="$(($1+$2))
	fi
}

add 10 20

3、不同脚本中的函数调用

第一个脚本 test_func_filemd5.sh:

#!/bin/bash

# 对文件进行md5加密 

function file_md5() {
	if [ $# -ne 1 ];then
		echo "参数不是一个"
		exit 1
	else
		md5=$(md5sum $1)
		echo "$1的md5摘要为:"$md5
	fi
}

第二个脚本 test_func_filemd5call.sh:

#!/bin/bash

# 调用文件加密的函数

. ./test_func_filemd5.sh # 载入文件test_func_filemd5.sh

while [ 1 ]
do
	read -p "请输入你要加密的文件(包含路径):" filename
	file_md5 $filename # 调用函数,载入文件过后就跟文件内调用一样
done

注意:不同脚本之间函数的调用方法,先将另一个脚本载入到本脚本中,然后调用函数就跟本脚本内调用函数的方式一样。

 

练习题:依次打印/var/log下面所有日志文件的行数

test_func_countfilelines.sh

#!/bin/bash

# 统计文件行数

function count_file_lines() {
	if [ $# -lt 1 ];then
		echo "请输入参数"
		exit 1
	else
		for filename in $*
		do
			lines=$(awk 'END{print NR}' $filename)
			echo "$filename的行数为:"$lines                
        	done	
	fi
}

test_func_countfilelinescall.sh

#!/bin/bash

# 统计/var/log目录下面文件的行数,调用统计文件行数的函数实现

. ./test_func_countfilelines.sh

basepath="/var/log/"

for filename in $(ls -l $basepath | grep "^-" | awk '{print $NF}')
do
	filepath=$basepath$filename
	count_file_lines $filepath
done

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值