bash脚本的优雅写法

调用方式

用来做函数库

如果是用来做库,脚本内只需要编写函数

用来做可执行脚本

如果要用来做可执行脚本,就在脚本的最后加上
__main__ "$@"

这种写法可以实现执行执行脚本中的函数

bash demo.sh demo 1 2 '3 4'
./demo.sh demo 1 2 '3 4'

也支持

source demo.sh
demo 7 8 '9 10'

shell脚本示例

#!/bin/bash

shell_set() {
    # 严谨的执行方式
    set -o nounset -o xtrace -o errexit -o pipefail
}

# 函数定义
demo() {
    # 获取当前的执行函数
    # 尽量使用局部变量
    local function_name=${FUNCNAME[0]}

    echo function_name=$function_name
    echo params_count=$#
    echo params="$@"
    echo
    echo $function_name "$@"
}

__main__() {
    # 函数调用
    if [ $# -gt 0 ]; then
        function=$1
        shift
        $function "$@"
    fi
}

__main__ "$@"