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