惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

MongoDB | Blog
MongoDB | Blog
J
Java Code Geeks
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
D
DataBreaches.Net
腾讯CDC
GbyAI
GbyAI
I
InfoQ
博客园 - Franky
G
Google Developers Blog
Last Week in AI
Last Week in AI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
V
Visual Studio Blog
Vercel News
Vercel News
博客园_首页
MyScale Blog
MyScale Blog
Martin Fowler
Martin Fowler
N
Netflix TechBlog - Medium
V
V2EX
T
The Blog of Author Tim Ferriss
M
MIT News - Artificial intelligence
雷峰网
雷峰网
H
Hackread – Cybersecurity News, Data Breaches, AI and More
大猫的无限游戏
大猫的无限游戏
The GitHub Blog
The GitHub Blog

博客园 - 笨功夫才是真功夫

TortoiseSVN实现excel文件差异比对(集成ExcelMerge)[转] git仓库迁移 centos7.6 nginx配置ssl证书 在Debian12上安装mysql 8.0 Mysql8.0设置大小写不敏感解决方案[转] debian下常见问题 vue开发环境搭建 python常用脚本 mysql数据库备份脚本 redis安装和运维 docker环境下安装RabbitMQ Linux系统设置开机启动(草稿) 在Windows10部署kibana Elasticsearch监控 Flink cdc实践(陆续更新) 在windows下安装mysql 8.1 VMware虚拟机开机自动启动 停止windows10的系统更新 elasticsearch安装-集群 elasticsearch安装-单实例
bash脚本的输入参数解析
笨功夫才是真功夫 · 2024-04-26 · via 博客园 - 笨功夫才是真功夫
#!/usr/bin/env bash

############################################
#用 途: 用于脚本输入参数的规范处理
#测 试:假设文件名为test.sh , 执行./test.sh --daemon --helper=abc  --host_type=os
############################################

curdir=`dirname "$0"`
echo "curdir:"$curdir
curdir=`cd "$curdir"; pwd`
echo "curdir:"$curdir

#"$*" 把所有参数合并成一个字符串
for arg in "$*"; do
    echo "****:" $arg
done
echo --------------
#"$@" 会得到一个字符串参数数组
for arg in "$@"; do
    echo "@@@@:" $arg
done

# getopt 命令用于解析脚本的命令行参数,并根据定义的选项来重新排列这些参数
# -l 'helper:':定义一个长选项 --helper,后面必须跟一个参数。冒号表示这个选项需要一个参数。
OPTS=$(getopt \
  -n $0 \
  -o '' \
  -l 'daemon' \
  -l 'helper:' \
  -l 'host_type:' \
  -l 'debug' \
  -l 'logconsole' \
  -- "$@")

# 将getopt的输出设置为脚本的位置参数($1, $2, $3, ...)
eval set -- "$OPTS"

RUN_DAEMON=0
HELPER=
HOST_TYPE=
ENABLE_DEBUGGER=0
RUN_LOG_CONSOLE=0
while true; do
    case "$1" in
        --daemon) RUN_DAEMON=1 ; shift ;;
        --helper) HELPER=$2 ; shift 2 ;;
        --host_type) HOST_TYPE=$2 ; shift 2 ;;
        --debug) ENABLE_DEBUGGER=1 ; shift ;;
        --logconsole) RUN_LOG_CONSOLE=1 ; shift ;;
        --) shift ;  break ;;
        *) echo "Internal error" ; exit 1 ;;
    esac
done

echo "run_daemon:$RUN_DAEMON helper:$HELPER host_type:$HOST_TYPE "

export STARROCKS_HOME=`cd "$curdir/.."; pwd`

export DORIS_HOME="$STARROCKS_HOME"

export PID_DIR=`cd "$curdir"; pwd`

echo "doris_home:"$DORIS_HOME
echo "pid_dir:"$PID_DIR