首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在bash shell脚本中将正确的键和值从jq拉入数组

在bash shell脚本中,可以使用jq命令将正确的键和值从JSON数据中提取并存入数组。

首先,确保已经安装了jq工具。可以使用以下命令进行安装:

代码语言:txt
复制
sudo apt-get install jq

然后,假设我们有一个包含JSON数据的文件,例如data.json。可以使用以下命令将键和值从JSON数据中提取并存入数组:

代码语言:txt
复制
#!/bin/bash

# 读取JSON数据
json_data=$(cat data.json)

# 使用jq命令提取键和值
keys=($(echo $json_data | jq -r 'keys[]'))
values=($(echo $json_data | jq -r '.[]'))

# 打印数组内容
echo "Keys:"
for key in "${keys[@]}"
do
    echo $key
done

echo "Values:"
for value in "${values[@]}"
do
    echo $value
done

上述脚本中,首先使用cat命令读取data.json文件中的JSON数据,并将其存储在变量json_data中。然后,使用jq命令分别提取键和值,并将它们存储在名为keys和values的数组中。

最后,通过循环遍历数组并打印数组内容,可以将提取的键和值输出到控制台。

请注意,上述脚本假设JSON数据中的键和值都是字符串类型。如果JSON数据中的键或值是其他类型(如数字或布尔值),则需要相应地修改脚本以处理这些类型。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

数据库同步 Elasticsearch 后数据不一致,怎么办?

在使用 Logstash pg 库中将一张表导入到 ES 中时,发现 ES 中数据量 PG 库中这张表数据量存在较大差距。如何快速比对哪些数据没有插入?...2.2 比较脚本实现 以下是一个简单 Shell 脚本示例,用于比较 Logstash 输出文件(JSON 格式) PostgreSQL 数据库中数据。...该脚本将比较特定字段( id)以确定哪些数据可能未导入到 Elasticsearch。.../bin/bash # 将 JSON 文件中 ID 提取到一个文件中 jq '.id' /path/to/logstash_output.log > logstash_ids.txt # 删除 JSON...(2)需要安装运行 Redis 服务器。 根据需求和数据量,可以选择合适方案。如果处理数据量较小,且对速度要求不高,可以选择方案一,使用 Shell 脚本 grep 命令。

38910

Shell脚本入门需要注意几个问题

比如: 接口测试 系统环境初始化 应用自动化部署 系统管理/监控(日志清理、服务管理、资源监控等) …… Linux下Shell脚本 ,相较于Windowsbat脚本,简直友好不是一般,在Linux...xxx do 你代码 done IFS="$OLDIFS" 变量定义时,变量名之间等号两边不能有空格 a=123 // 正确 a = 123 // 错误 变量名称不建议全大写,因为系统变量就是大写...数组下标 0 开始 // 正确 arr_name=( 张三 李四 ) arr_name=( '张三' '李四' ) arr_name=( "张三" "李四" ) // 错误 arr_name=(...张三,李四) 脚本尽量不要直接赋予 x 权限,在调用脚本时,使用 bash xxx.sh 即可 注意 > >> 区别,前者是覆盖原有内容,后者是在原有内容后面追加 脚本运行后切换到脚本所在目录:...cd $(dirname $0 Shell 脚本调试:bash -x xxx.sh [[email protected]/* <!

19030

Linux Shell 脚本编程基础

,比如它也有循环结构分支控制结构等,用这种编程语言编写Shell程序与其他应用程序具有同样效果,下面我们会介绍Shell-Script编写...,通常用在shell脚本中与用户进行交互场合,该命令可以一次读取多个变量,变量输入都需要使用空格隔开.在read命令后面,如果没有指定变量名,读取数据将被自动赋值给特定变量REPLY....,由用户自由定义变量名变量....是不是我们只要定义了语系为中文语系,zh_CN.UTF-8就可以正确显示中文了呢?...这要分情况,如果我们是在图形界面中,或者是使用远程连接工具(SecureCRT),只要正确设置了语系,那么是可以正确显示中文

2K20

Mastodon 同步到 Memos

下面开始介绍一下 Mastodon 利用 Webhook 同步嘟文到 Memos 方法。我用Shell Script 脚本,是一个很简单脚本,只作了一些常识性逻辑判断,可能不完美。...脚本内容 把下方脚本内容保存到服务器上一个 .sh 文件中,当前用户 Home 目录(~) ~/mastodon_sync_to_memos.sh 文件中,并配置以下内容,请注意替换: MEMOS_HOST...JSON 数据中提取 Memos id NEW_MEMOS_ID=$(echo "$RESPONSE" | jq -r '.id') # 更新 JSON 文件中 latest_memos_id..." "$FILE_PATH" # 更新 JSON 文件中 latest_mastodon_id jq ".latest_mastodon_id = \"$LATEST_MASTODON_ID\...绑定关系,并确保 "bind" 中数组保留唯一也只有唯一 jq ".bind += [{\"$LATEST_MASTODON_ID\": \"$NEW_MEMOS_ID\"}] | .bind

12310

Shell入门

/bin/bash Shell 编程跟 JavaScript、php 编程一样,只要有一个能编写代码文本编辑器一个能解释执行脚本解释器就可以了。...同时,Bash 也是大多数Linux 系统默认 Shell。 在一般情况下,人们并不区分 Bourne Shell Bourne Again Shell,所以,像 #!.../bin/bash。 #! 告诉系统其后路径所指定程序即是解释此脚本文件 Shell 程序。 hello world #!/bin/bash echo hello world!...数组Shell 中,用括号来表示数组数组元素用”空格”符号分割开。定义数组一般形式为: 数组名=(1 2 ......读取数组 ${数组名[下标]} valuen=${array_name[n]} 使用 @ 符号可以获取数组所有元素,例如: echo ${array_name[@]} 获取数组长度

70510

SHELL(bash)脚本编程一:变量

本篇开始,介绍shell脚本编程,更确切说是bash脚本编程(版本:4.2.46(1)-release)。我们变量开始。...shell(interactive shell)是指shell与用户进行交互,shell需要等待用户输入(键入一条命令后并按下回车),用户需要等待命令执行输出。...非交互式shell启动时(脚本中),会继承派生出此shellshell环境变量并执行环境变量BASH_ENV中所指代文件。...每个由当前bash进程派生出子进程(包括子shell),都会继承当前bash环境变量(除非子进程对继承环境变量进行了重新赋值,否则它们父进程相同)。...word} 如果变量状态为unset或为空,word结果会被输出到标准错误,如果shell是非交互(脚本中)则退出(exit);否则展开为变量

2.7K40

JSON神器之jq使用指南指北

类型 jq 支持与 JSON 相同数据类型集 - 数字、字符串、布尔数组、对象(在 JSON 中是只有字符串散列)“null”。...您可以使用它从已知数量中构造一个数组[.foo, .bar, .baz])或将过滤器所有结果“收集”到一个数组中([.items[].name]) 一旦你理解了 "," 操作符,你就可以从不同角度来看待...from_entries接受、名称、名称、作为。...在 jq 中,所有过滤器都有一个输入一个输出,因此不需要手动管道将程序一个部分传递到下一个部分。...元数据中“搜索”(如果存在)应具有字符串或数组(字符串数组);这是作为顶级搜索路径前缀搜索路径。 module ; 该指令完全是可选。它不是正确操作所必需

28.1K30

使用 shell 脚本自动申请进京证 (六环外) —— debug 过程

shell 数组初始化 有了 jq 就可以继续开开心心地跑脚本了,然而得到当头一棒: > sh jinjing.sh check jq ok check curl ok check head ok check...: local stateheader=() 再普通不过 shell 数组初始化语法,看起来非 bash shell 不认,只好把它改成更通用形式: local stateheader...,长度为 340 正常,与 wc 输出仅差了一个换行,可以看作是一致 adb shell 在交互执行脚本执行时行为还不一样,这真是离大谱。...-> 去除 shell 数组初始化 -> 去除 date +1 -> 升级 curl -> 对比 pc android 上 curl -v 输出,最终定位到了问题根因:使用 shell 字符串长度作为数据长度...虽然错误低级,排查过程还是蛮高大上,总体思路也是正确,只是在具体摸索过程中走了不少弯路,回头来看看,也蛮有意思,特别是 android adb shell,真的对它产生了新认知。

2K90

巧用 shell-operator 配置 K8s Pod 保护策略

Shell-operator 是一个在 Kubernetes 集群中运行事件驱动脚本工具。...Shell-operator 通过将脚本视为由事件触发钩子,提供了 Kubernetes 集群事件 Shell 脚本之间集成层。您可以将其视为 operator-sdk,但用于脚本。...Shell-operator 用作更高级 addon-operator 基础,该 operator 支持 Helm charts 存储。...Shell-operator 提供了以下功能: Kubernetes 集群简易管理:使用运维人员熟悉工具。可以是 bash、python、kubectl 等,真是运维人实用工具。...对象选择器属性过滤器:shell-operator 可以监视特定对象集,并检测其属性更改。 简单配置:钩子绑定定义是脚本标准输出中 JSON 或 YAML 文档。

8110

shell学习教程(超详细完整)

二、shell分类 Bash 常用快捷 输入输出重定向 linux 标准输入与输出 输入重定向 输出重定向 /dev/null 文件 多命令顺序执行 shell脚本执行 三、shell变量 1..../bin/bash [指定告知系统当前这个脚本要使用shell解释器] Shell相关指令 文件命名规范: 文件名.sh .sh是linux下bash shell 默认后缀 Bash 常用快捷.../bin/bash #1加到100 i=1 s=0 #给变量i变量s赋值 while [ $i -le 100 ] #如果变量i小于等于100,则执行循环 do s=$(( $s+$i.../bin/bash #1加到100 i=1 s=0 #t给变量i变量s赋值 until [ $i -gt 100 ] #循环直到变量i大于100,就停止循环 do s=$(( $s+$...-f 脚本文件名: sed脚本中读入sed操作。awk命令-f非常类似。 -r: 在sed中支持扩展正则表达式。

5.6K20

shell变量详解

给你使用 同时在内存跟踪表中记录 该地址被占用不在分给别人,同时在系统中建立映射机制 比如:变量名 STRING1=‘ABC’ name0x5 d、释放内存 内存跟踪表中将记录删除...,下次存数据直接覆盖 图片 CHAR1(0x3)=A 图片可以看出,当我们在脚本中定义变量存时候,可以以下方面看到变化: a、内存占用:如果存是一个字符则占用1个字节,如果存是字符串则是字符串长度加...2.2、定义一个变量 变量格式: 变量名=shell编程中变量名等号之间不能有空格。 变量名命名规则: 命名只能使用英文字母,数字下划线,首个字符不能以数字开头。...此时,系统中将有两个shell,一个是登录时系统启动shell, 另一个是系统为运行脚本程序创建shell。...如果在一个shell脚本程序中定义了一个变量,当该脚本程序运行时, 这个定义变量只是该脚本程序内一个局部变量,其他shell不能引用它,要使某个变量可以在其他shell中 被改变,可以使用export

54720

shell写ssh快速链接工具-2.0

whiptail 简单介绍 这里我只用到了whiptail菜单栏提示框,所以这里就只说这两种用法: 1:菜单框 语法: whiptail --menu 菜单名称 高 宽 显示多少条 [标示 菜单项]...现在配置文件写完了,我们看一下怎么在shell里解析json 在shell脚本中解析json 这里我是用用 jq 这个工具来做,当然这个jq 不是 jquery。...我用上面写ssh配置举例: 1:取出数组中第一个元素 jq .[0] ssh.json 结果: { "name": "何白白", "server": [ { "name":...1:首先我们需要将json数组中每个对象name属性找出来 这样写: for i in $(seq `jq length $config_file`) do index=`expr $i -...choose:代表用户选择第几个菜单 exitstatus :代表用户有没有选择取消按钮 不等于0时代表选择取消 3:这一步就和上一步差不多了,就不写了 4:链接ssh 这里可以参考写之前写内容

2.1K30

Linux 命令行艺术

本文主要关注于交互式 Bash,但也有很多技巧可以应用于其他 shell Bash 脚本当中。 除去“标准”Unix 命令,本文还包括了一些依赖于特定软件包命令(前提是它们具有足够价值)。...而对于图形界面启动 shell cron 启动 shell,则需要单独配置文件。...若要在 OS X 终端中将 Option 视为 alt (例如在上面介绍 alt-b、alt-f 等命令中用到),打开 偏好设置 -> 描述文件 -> 键盘 并勾选“使用 Option 作为 Meta...Strict mode:为了编写更好脚本文件。 shellcheck:一个静态 shell 脚本分析工具,本质上是 bash/sh/zsh lint。...Filenames and Pathnames in Shell:有关如何在 shell 脚本正确处理文件名细枝末节。

4.5K10

何在 Linux 上安装友好交互式 shell:Fish

无需更多其他配置,你也不需要安装任何额外附加组件/插件! 在这篇教程中,我们讨论如何在 Linux 中安装使用 fish shell。...它只能在少数 Linux 发行版中官方仓库中找到, Arch Linux,Gentoo,NixOS, Ubuntu 等。然而,安装 fish 并不难。...所以,我需要输入一个 Linux 命令前几个字母,然后按下 来完成这个命令。 如果有更多可能性,它将会列出它们。你可以使用上/下箭头列表中选择列出命令。...请看下面当我在 Bash shell fish shell 中输入相同命令时截图区别。 Bash: Fish: 正如你所看到, 在 fish shell 中已经被高亮显示。...如果你不知道正确路径,以下命令将会帮助你: 注销并且重新登录以使用新默认 shell。 请记住,为 Bash 编写许多 shell 脚本可能不完全兼容 fish。

1.6K70

一篇文章学习 linux 命令

本文主要关注于交互式 Bash,但也有很多技巧可以应用于其他 shell Bash 脚本当中。 除去“标准”Unix 命令,本文还包括了一些依赖于特定软件包命令(前提是它们具有足够价值)。...而对于图形界面启动 shell cron 启动 shell,则需要单独配置文件。...若要在 OS X 终端中将 Option 视为 alt (例如在上面介绍 alt-b、alt-f 等命令中用到),打开 偏好设置 -> 描述文件 -> 键盘 并勾选“使用 Option 作为 Meta...Strict mode:为了编写更好脚本文件。 shellcheck:一个静态 shell 脚本分析工具,本质上是 bash/sh/zsh lint。...Filenames and Pathnames in Shell:有关如何在 shell 脚本正确处理文件名细枝末节。

2.2K22

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券