Bash|Bash 常用脚本片段

获取一些常用变量:

# 获取当前脚本所在目录 SCRIPT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )# 获取当前脚本的文件名 SCRIPT_NAME=$( basename "$0" )# 在 $DIR 中搜索第一个 jar 文件的名字 JAR_FILE=$(find $DIR -maxdepth 1 -type f -name "*.jar" | head -1)

一些常用的判断:
# 判断变量是否为空 if [ -z "$VAR" ]; then echo "\$VAR is empty" else echo "\$VAR is $VAR" fi# 判断路径是否存在 if [ -d "$PATH" ]; then echo "File $PATH exists" else echo "File $PATH not found" fi# 判断当前用户是否是 root if [ "${EUID:-$(id -u)}" -eq 0 ]; then do_root_stuff fi# 判断 docker 命令能否执行 if ! command -v docker &> /dev/null; then echo "当前系统不能运行 docker 命令" fi

根据命令中的关键字搜索进程ID
# set pid=$(get_pid "some-service-name") get_pid() { SERVICE_NAME=$1 PID=$(ps aux | grep "[${SERVICE_NAME:0:1}]${SERVICE_NAME:1}" | awk '{print $2}') echo "$PID" }

解析并查询命令行参数的通用方法 【Bash|Bash 常用脚本片段】这段脚本非常有用,你只要在你的脚本开头加上下面的内容,就能以 --param value 的格式解析参数。这段脚本尽可能写的短小不占空间,所以格式方面,要求所有的参数都有值,例如不接受无参数的 --daemon,而必须传 --daemon true
### 解析命令行参数 PARAMS_ARR=() while (( "$#" )); do case "$1" in --*) PARAMS_ARR+=($1); shift; ; *) PARAMS_ARR[-1]="${PARAMS_ARR[-1]} $1"; shift; ; esac done ### 获取命令行参数,如果没有则返回默认值 ### 示例:value=https://www.it610.com/article/$(get_param"param_name" "default_value") function get_param { for param in "${PARAMS_ARR[@]}"; do if [[ $param =~ "--$1" ]]; then echo ${param#"--$1"} && return 0; fi done echo $2 } ### 获取命令行参数,如果没有则报错退出(退出机制需要 set -e 来开启,否则你就要自行处理返回值) ### 示例:value=https://www.it610.com/article/$(get_param_required"param_name") function get_param_required { for param in "${PARAMS_ARR[@]}"; do if [[ $param =~ "--$1" ]]; then echo ${param#"--$1"} && return 0; fi done echo -e "\e[31mParameter '$1' is required\e[m" >&2 && return 1 } set -e

    推荐阅读