demoFun(){
echo "This is my first function"
}
echo "-----Execution------"
demoFun
echo "------Finished-----"
#!/bin/bash
funWithReturn(){
echo "This function will add the two numbers of the input..."
echo "Enter the first number: "
read aNum
echo "Enter the second number: "
read anotherNum
echo "The two numbers are $aNum and $anotherNum !"
return $(($aNum+$anotherNum))
}
funWithReturn
echo "The sum of the two numbers entered is $? !"
- 函数返回值在调用该函数后通过
$?
来获得- 所有函数在使用前必须定义。
在Shell中,调用函数时可以向其传递参数。在函数体内部,通过 $n
的形式来获取参数的值,例如,$1
表示第一个参数,$2
表示第二个参数… 带参数的函数示例:
#!/bin/bash
funWithParam(){
echo "The first parameter is $1 !"
echo "The second parameter is $2 !"
echo "The tenth parameter is $10 !"
echo "The tenth parameter is ${10} !"
echo "The eleventh parameter is ${11} !"
echo "The total number of parameters is $# !"
echo "Outputs all parameters as a string $* !"
}
funWithParam 1 2 3 4 5 6 7 8 9 34 73
输出结果:
The first parameter is 1 !
The second parameter is 2 !
The tenth parameter is 10 !
The tenth parameter is 34 !
The eleventh parameter is 73 !
The total number of parameters is 11 !
Outputs all parameters as a string 1 2 3 4 5 6 7 8 9 34 73 !
显示返回:return <RETURN_CODE>
隐式返回:如果不指定,则默认以函数体最后一行的执行结果作为返回
返回的code在1-255之间。
其中0=success。
可以使用$?
来获取函数执行的结果来进行判断。($?
获取上一行命令的返回值), 例如:
[@bogon:myBlog2]$ man cp
[@bogon:myBlog2]$ echo "$?"
0
[@bogon:myBlog2]$ cat /host/sd
cat: /host/sd: No such file or directory
[@bogon:myBlog2]$ echo "$?"
1
功能:传入要备份的文件路径,将文件备份到/tmp目录下
#!/usr/bin/env bash
backup_file() {
if [[ -f $1 ]] # 检测$1是不是已存在的文件
then
# basename 将前面的路径都剔除,只保留文件名
# $$表示pid(正在运行当前脚本的进程id)。在这里使用这个,为了防止同一天多次备份时,前面的备份被覆盖。
# $(date +%F) 将日期转化为2019-06-01形式
local BACK="/tmp/$(basename ${1})-$(date +%F)-$$"
echo ${BACK}
cp $1 ${BACK}
else
# 此时文件不存在或者cp出了问题,返回码为1
return 1
fi
}
backup_file /etc/hosts
# $?表示获取上面函数的返回值。
if [[ $? -eq 0 ]] # 如果为0表示执行成功。
then
echo "Backup succeeded"
else
echo "Backup failed!"
exit 1
fi