函数的调用方式有多种,可以直接在 Shell 命令行调用函数,或是在脚本内部调用函数,或是从其他函数文件中调用函数,还可以递归地调用函数。
在脚本中调用函数
在脚本中调用函数的实例:
#! /bin/bash
function yesterday() {
date --date='1 day ago'
}
yesterday
上面脚本的运行效果:
2017041505
从函数文件中调用函数
1.我们可以把所有的函数存储在一个函数文件中;
2.我们可以把所有的函数加载到当前脚本或是命令行。
加载函数文件中的所有函数的语法如下:
/path/to/functions.sh
现在有如下脚本 functionsTest.sh :
#! /bin/bash
declare -r TRUE=0
declare -r FALSE=1
declare -r PASSWD_FILE=/etc/passwd
function to_lower() {
local str="$@"
local output
output=$(tr '[A-Z]' '[a-z]'<<<"${str}")
echo $output
}
function is_root() {
[ $(id -u) -eq 0 ] && return $TRUE || return $FALSE
}
function is_user_exits() {
local u="$1"
grep -q "^${U}" $PASSWD_FILE && return $TRUE || return $FALSE
}
从函数文件中调用上述脚本的测试脚本如下:
#! /bin/bash
. /home/toby/functionsTest.sh
var1="The DHJAGD sdja aidWyMDAHDGAswdGDAHWk ashjdaksSd WYGY."
is_root && echo "You are logged in as root." || echo "You are not logged in as root."
is_user_exits "toby" && echo "Account found." || echo "Account not found."
echo -e "*** Orignal quote: \n${var1}"
echo -e "*** Lowercase version: \n$(to_lower ${var1})"
上述脚本的运行结果:
2017041506递归函数调用
递归函数是重复调用其自身的函数,并且没有递归调用次数的限制。
下面是一个计算给定命令行参数的阶乘的实例:
#! /bin/bash
function factorial() {
local i=$1
local f
declare -i i
declare -i f
[ $i -le 2 ] && echo $i || { f=$(( i - 1 )); f=$(factorial $f); f=$(( f * i )); echo $f; }
}
[ $# -eq 0 ] && { echo "Usage: $0 number"; exit 1; }
factorial $1
运行效果如下:
2017041507本文参考自 《Linux Shell命令行及脚本编程实例详解 》
网友评论