shell 中以某一个变量作为 key 取其对应的环境变量值如何实现?
資深大佬 : nihaorz 4
需求描述:
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
大佬有話說 (3)