需求描述:
APP_ENVS 变量由逗号分割的英文字符串组成,程序对 APP_ENVS 变量的值以逗号分割进行遍历
每次遍历的时候定义变量 env_name,需要判断以 env_name 命名的环境变量是否存在,存在则输出该环境变量的值,不存在则赋值 flag 为 1
遍历结束后判断 flag 为 1 则退出程序
我的写法如下,结果提示line 20: ${$env_name}: bad substitution
,显然写成${$env_name}
是不对的,但是我换成${env_name}
也是不对啊,java 狗写 shell 真的是太难了,求大佬指点
#!/bin/bash
# 定义打印函数
println() {
send=`date '+%Y-%m-%d %H:%M:%S'`
echo "$send $1"
}
# 待检测的环境变量,以英文逗号间隔隔开
APP_ENVS="CAS_URL,APP_URL,USERSYSTEM_URL"
# 环境变量检测标识,检测不通过则赋值为 1
flag=0
env_names=(${APP_ENVS//,/ })
for env_name in ${env_names[@]}
do
echo "env_name: $env_name"
# TODO
if [ -z "${$env_name}" ] ; then
println "缺少环境变量: $env_name"
flag=1
else
echo "$env_name value: ${$env_name}"
fi
done
if [ $flag -eq 1 ] ; then
println "程序退出"
exit 1
fi
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.