Mryqu's Notes


  • 首页

  • 搜索
close

Shell逐行读取、解析并export变量实践

时间: 2020-12-15   |   分类: Tool   Linux     |   阅读: 96 字 ~1分钟

setenv.yaml示例

MY_HOME: /local/install/myhome
MY_JAVA_HOME: $MY_HOME/jre/bin

test.ksh示例

#!/bin/ksh

getCustEnv() {
  # 除了while read 也可以使用for var,但是需要更改IFS为换行符
  cat setenv.yaml | while read line; do
    line=$(echo $line | grep -v "^\s*#" | grep ":")
    if [ ! -z $line ]; then
      key=$(echo $line | cut -d: -f1 | sed -e 's/^\s*//' -e 's/\s*$//')
      val=$(echo $line | cut -d: -f2 | sed -e 's/^\s*//' -e 's/\s*$//')

      echo "line=$line"
      echo "key=$key"
      echo "val=$val"
      if [ ! -z $key ]; then
        echo "export $key=$val"
        # 不可以直接执行export,否则变量值还是字符串,例如MY_JAVA_HOME变量值仍为$MY_HOME/jre/bin,而不是/local/install/myhome/jre/bin
        eval export $key=$val
        # 变量的二次引用 这里${!key}不好使 		
        eval newVal=\${$key}
        echo "$key=$newVal"
      fi
      echo ""
    fi
  done
}

getCustEnv

标题:Shell逐行读取、解析并export变量实践
作者:mryqu
声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!

#shell# #逐行读取# #export变量# #变量的二次引用#
Shell读取文件修改时间并格式化输出
sed正则表达式捕获组实践
  • 文章目录
  • 站点概览

Programmer & Architect

662 日志
27 分类
1472 标签
GitHub Twitter FB Page
© 2009 - 2023 Mryqu's Notes
Powered by - Hugo v0.120.4
Theme by - NexT
0%