我的那些shellscripts-bash扩展函数

33次阅读

共计 1561 个字符,预计需要花费 4 分钟才能阅读完成。

作为一个开发者,近期在公司里搞运维,可能是开发语言用多了,用起 bash 来,还是喜欢造函数使用,做个分享分享……

自定义 Linux 函数集合

#function return value if success
export RAY_RET_SUCCESS=0
#function return value if failed
export RAY_RET_FAILED=1

#判断空字符串
function IsEmpty() {if [ -z "$1"]; then
        return $RAY_RET_SUCCESS
    fi

    return $RAY_RET_FAILED
}

#判断是否为 root 用户
function HasRootPremission() {if [ "$(id -u)" != "0" ]; then
        return $RAY_RET_FAILED
    fi

    return $RAY_RET_SUCCESS
}

#判断命令是否存在
function IsCommandExists() {
    local CMDS
    for cmd in "$@"; do
        if ! type $cmd >/dev/null 2>&1; then
            CMDS="$CMDS $cmd"
        fi
    done

    if [! -z "$CMDS"]; then
        return $RAY_RET_FAILED
    fi

    return $RAY_RET_SUCCESS
}

# 判断是否是目录
function IsDir() {if [ -d "$1"]; then
        return $RAY_RET_SUCCESS
    fi

    return $RAY_RET_FAILED
}

# 判断文件存在
function IsFile() {if [ -f "$1"]; then
        return $RAY_RET_SUCCESS
    fi

    return $RAY_RET_FAILED
}

#创建文件,自动创建上级目录
function CreateFile() {
    if ! IsFile $1; then
        $RAY_SUDO mkdir -p $(dirname $1)
        $RAY_SUDO touch $1
        $RAY_SUDO chown `whoami`:`whoami` $1
    fi

    IsFile $1
    return $?
}

# 创建一个随机密码
function MakePassword() {
    if IsCommandExists openssl; then
        openssl rand -base64 18 2>/dev/null
    else
        head /dev/urandom | tr -dc 'a-zA-Z0-9/\-=[];,._+{}:<>@%^&*()' | fold -w ${1:-18} | head -n 1
    fi
}

# 判断 shell 环境是否为 zsh
function IsZsh() {if [[ `ps -p $$ -oargs=` =~ "zsh"]]; then
        return $RAY_RET_SUCCESS
    fi

    return $RAY_RET_FAILED
}

# 判断 shell 环境是否为 bash
function IsBash() {if [[ `ps -p $$ -oargs=` =~ "bash"]]; then
        return $RAY_RET_SUCCESS
    fi

    return $RAY_RET_FAILED
}

# 判断操作系统是否为 ubuntu
function IsUbuntu() {
    if cat /etc/issue /etc/*-release | grep -Eqi "Ubuntu"; then
        return $RAY_RET_SUCCESS
    fi

    return $RAY_RET_FAILED
}

# 判断操作系统是否为 centos 或 redhat
function IsRedHat() {if cat /etc/issue /etc/*-release | grep -Eqi "(CentOS|Red Hat Enterprise Linux Server)"; then
        return $RAY_RET_SUCCESS
    fi

    return $RAY_RET_FAILED
}

正文完
 0