Pingfan's Blog

bash编程——函数的return code

字数统计: 271阅读时长: 1 min
2019/06/01 Share

显示返回:return <RETURN_CODE>

隐式返回:如果不指定,则默认以函数体最后一行的执行结果作为返回

返回的code在1-255之间。

其中0=success。

可以使用$?来获取函数执行的结果来进行判断。

例如下面的备份函数(功能:传入要备份的文件路径,将文件备份到/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
CATALOG