• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Bash-常用脚本片段

linux 搞代码 3年前 (2022-03-03) 20次浏览 已收录 0个评论

获取一些罕用变量:

<code class="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)

一些罕用的判断:

<code class="bash"># 判断变量是否为空
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

<code class="bash"># 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"
}

解析并查问命令行参数的通用办法

这段脚本十分有用,你只有在你的脚本结尾加上上面的内容,就能以 --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=$(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=$(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

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Bash-常用脚本片段
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址