首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为值解析JSON文件

为值解析JSON文件
EN

Stack Overflow用户
提问于 2022-09-15 13:47:38
回答 1查看 34关注 0票数 0

我有一个packer文件,我试图解析这个文件,这样我就可以得到特定的脚本,例如,在下面的文件中,我只希望在我的结果中包含任何mysql,例如install-mysql.sh,init-mysql.sh (试图为此使用powershell )。

代码语言:javascript
复制
{
  "variables": {
    "image_iso": "",
    "image_sum": ""
  },
  "builders": [
    {
      "type": "virtualbox-iso",
      "vm_name": "box",
      "boot_wait": "10s",
      "disk_size": 51200,
      "guest_os_type": "RedHat_64"
    }
  ],
  "provisioners": [
    {
      "type": "shell",
      "scripts": [
        "packer/provisioners/common/base.sh",
        "packer/provisioners/common/tcp-kernel-param.sh",
        "packer/provisioners/web/create-user-webmaster.sh",
        "packer/provisioners/web/install-nginx.sh",
        "packer/provisioners/web/advanced-nginx.sh",
        "packer/provisioners/web/configure-vhost.sh",
        "packer/provisioners/mysql/mysql-kernel-param.sh",
        "packer/provisioners/mysql/install-mysql.sh",
        "packer/provisioners/mysql/init-mysql.sh",
        "packer/provisioners/redis/install-redis.sh",
        "packer/provisioners/redis/redis-kernel-param.sh",
        "packer/provisioners/misc/install-wandisco-git.sh",
        "packer/provisioners/misc/install-chrony.sh",
        "packer/provisioners/rails/install-required_package.sh",
        "packer/provisioners/rails/install-rbenv.sh",
        "packer/provisioners/common/enable-defence-portscan.sh",
        "packer/provisioners/common/vagrant.sh",
        "packer/provisioners/common/vmware.sh",
        "packer/provisioners/common/cleanup.sh"
      ],
      "override": {
        "virtualbox-iso": {
          "execute_command": "echo 'vagrant'|sudo -S sh '{{.Path}}'"
        }
      }
    },
    {
      "type": "shell",
      "script": "packer/provisioners/common/virtualbox.sh",
      "only": [
        "virtualbox-iso"
      ],
      "override": {
        "virtualbox-iso": {
          "execute_command": "echo 'vagrant'|sudo -S sh '{{.Path}}'"
        }
      }
    }
  ],
  "post-processors": [
    {
      "keep_input_artifact": false,
      "type": "vagrant",
      "output": "./packer/vagrant-boxes/CentOS-7-x86_64-Minimal.box"
    }
  ]
}

我目前使用powershell解析了这个文件。

代码语言:javascript
复制
$jsonfile = Get-Content -Raw .\software.json | ConvertFrom-Json

write-output $jsonfile.provisioners.scripts
代码语言:javascript
复制
packer/provisioners/common/base.sh
packer/provisioners/common/tcp-kernel-param.sh
packer/provisioners/web/create-user-webmaster.sh
packer/provisioners/web/install-nginx.sh
packer/provisioners/web/advanced-nginx.sh
packer/provisioners/web/configure-vhost.sh
packer/provisioners/mysql/mysql-kernel-param.sh
packer/provisioners/mysql/install-mysql.sh
packer/provisioners/mysql/init-mysql.sh
packer/provisioners/redis/install-redis.sh
packer/provisioners/redis/redis-kernel-param.sh
packer/provisioners/misc/install-wandisco-git.sh

在powershell中,我不确定如何解析上面的输出,以获得我在问题中提到的文件。

代码语言:javascript
复制
sqlFiles
---------------
install-mysql.sh
init-mysql.sh
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-15 13:54:19

使用Where-Object cmdlet筛选列表:

代码语言:javascript
复制
$mysqlScripts = $jsonfile.provisioners.scripts |Where-Object {$_ -match 'mysql'}

如果要删除前面的路径,请使用Split-Path -Leaf

代码语言:javascript
复制
$mysqlScripts |Split-Path -Leaf
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73732330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档