跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • shell 中以某一个变量作为 key 取其对应的环境变量值如何实现?
未分類
22 2 月 2021

shell 中以某一个变量作为 key 取其对应的环境变量值如何实现?

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)

  • 資深大佬 : lework1234

    可以用 `eval echo $$env_name` 来解决嵌套变量

  • 資深大佬 : taolu

    `echo ${!env_name}`

  • 主 資深大佬 : nihaorz

    @lework1234 @taolu 感谢回复,问题已解决,`echo ${!env_name}`很好用,谢谢

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具