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

推荐订阅源

Martin Fowler
Martin Fowler
A
About on SuperTechFans
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
aimingoo的专栏
aimingoo的专栏
T
The Blog of Author Tim Ferriss
IT之家
IT之家
罗磊的独立博客
博客园_首页
月光博客
月光博客
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Last Week in AI
Last Week in AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
量子位
Hugging Face - Blog
Hugging Face - Blog
G
Google Developers Blog
博客园 - 叶小钗
H
Help Net Security
N
Netflix TechBlog - Medium
B
Blog
Engineering at Meta
Engineering at Meta
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
V
V2EX
Vercel News
Vercel News
博客园 - 三生石上(FineUI控件)

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

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