用键替换json值和bash中的相应环境变量


afs-loliaholic
2025-03-19 02:49:32 (4小时前)


我跟随json

{
“NODE_ENV”:“生产”,
“APP_URL”: “测试”
}
我想替换键的值,如果它们存在于环境变量上,只使用unix命令而不是…

4 条回复
  1. 0# Let us fly | 2019-08-31 10-32



    Perl,使用CPAN的JSON模块:




    1. perl -MJSON -0777 -lne
      my $data = decodejson $;
      for my $key (keys %$data) {
      $data->{$key} = $ENV{$key} if exists $ENV{$key};
      }
      print encode_json($data);
      file.json

    2. </code>


    或Ruby,没有外部依赖




    1. ruby -rjson -e
      data = JSON.parse(File.read(ARGV.shift))
      data.each_key {|key| data[key] = ENV[key] if ENV.has_key? key}
      puts JSON.generate(data)
      file.json

    2. </code>

  2. 1# v-star*위위 | 2019-08-31 10-32



    如果你改变主意和你的想法

    要求

    这是一个shell脚本的例子,你可以通过使用它来做到这一点

    JQ




    1.   #!/bin/sh
    2. for key in jq "keys | .[]" $1 | xargs ; do
      eval _TO_CHECK=\$$key ##
      if [ $_TO_CHECK ]; then
      jq “.$key=\”$_TO_CHECK\” $1 > _temp.json && mv _temp.json $1
      fi
      done

    3. </code>

  3. 2# 只怕再见是故人 | 2019-08-31 10-32



    这在Python中非常简单:




    1. import json
      import os
      import sys

    2. data = json.load(sys.stdin)
      newdata = {x: os.environ.get(x, data[x]) for x in data}
      json.dump(newdata, sys.stdout, indent=2)

    3. </code>


    像它一样使用它

    ./update_from_env.py < test.json > new.json; mv new.json test.json


登录 后才能参与评论