0%

shell脚本 参数优先级

实现shell参数优先级:

  • 输入 > 环境变量 > 默认
  • 效果
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/usr/bin/env bash
## 参数 1:set_name 2:branch 3:upload_para
## 参数优先级: 输入 > 环境变量 > 默认
## 环境变量与参数名同名

# 初始化参数
function do_update() {
# 转义空格
var=`echo $2 |sed 's/[ ]/\\\\ /g'`
echo export $1=${var}
eval export $1=${var}
}
# para : name, default, shell_input
function update_para() {
echo
echo "updata_para: $1 $2 $3"
# 命令输入
if [ -n "$3" ]; then
echo "set by input: $1 : $3"
do_update $1 $3
return
fi
# 环境变量
env_var="${!1}"
if [ -n "${env_var}" ]; then
echo "set by env: $1 : ${env_var}"
return
fi
# 默认值
echo "set by default: $1 : $2"
do_update $1 "$2"
}

# eg:
# para1: 如果第一个参数有输入, 就使用输入的, 如果环境变量中有一个名为para1的变量, 就是用环境变量中的, 否则 使用 默认值 "default_value"
update_para para1 "default_value" $1

echo
echo
# 使用变量从环境变量中取
echo para1 is ${para1}