Linux Shell 学习笔记三(主要是jq)
在Shell中调用Golang代码
go run <script_name>.go
Jq
jq在线验证:https://jqplay.org/jq
jq-to_entries-map-from_entries
[jiankunking@hddxps8156 jiankunking]# cat jq-entries.sh
#!/bin/bash
data='{"a": "xxxx","b": "yyyy"}'
a=20
echo `echo $data| jq 'to_entries'`data=`echo $data| jq 'to_entries | map(if .key == "a" then . + {"value":'$a'} else . end) | from_entries'`echo $data
if [ `echo $data | jq '.a'` -eq 20 ];then \echo 666
fidata=`echo $data | sed 's/ //g'`
echo $data
[jiankunking@hddxps8156 jiankunking]# ./jq-entries.sh
[ { "key": "a", "value": "xxxx" }, { "key": "b", "value": "yyyy" } ]
{ "a": 20, "b": "yyyy" }
666
{"a":20,"b":"yyyy"}
jq-to_entries-select
[jiankunking@hddxps8156 jiankunking]# kubectl get deployment test-admin -n i-test -ojson
{"apiVersion": "apps/v1","kind": "Deployment","metadata": {"labels": {"app": "test-admin","app.kubernetes.io/name": "test-admin","app.kubernetes.io/version": "v0"},"name": "test-admin","namespace": "i-test","resourceVersion": "2257518831","uid": "4519e6a3-a881-4b16-9cff-83d2d7425bf6"},"spec": {},"status": {}
}
[jiankunking@hddxps8156 jiankunking]# kubectl get deployment test-admin -n i-test -ojson | jq '.metadata.labels'
{"app": "test-admin","app.kubernetes.io/name": "test-admin","app.kubernetes.io/version": "v0"
}
[jiankunking@hddxps8156 jiankunking]# kubectl get deployment test-admin -n i-test -ojson | jq '.metadata.labels'| jq -r 'to_entries[]| select(.key=="app.kubernetes.io/name")| .value'
test-admin
[jiankunking@hddxps8156 jiankunking]#
ingress host替换
脚本
#!/bin/bashctx=qd-testecho "Usage:NS=<ns1,ns2,...> $0"if ! command -v jq >/dev/null; thenecho "jq not installed" >&2exit 1
fi
if ! command -v kubectl >/dev/null; thenecho "kubectl not installed" >&2exit 1
fifor ns in `echo $NS | tr ',' ' '`; doecho "+ NS: $ns"k="kubectl --context $ctx -n $ns"echo "+ k: $k"# replace ingress host: .qd-ctcc.jiankunking.com -> .qd-test.jiankunking.comif [ `$k get ing -lingress-class!=internal-gw 2>/dev/null | wc -l` -gt 0 ]; then$k get ing -lingress-class!=internal-gw -ojson \| jq '.items[].spec.rules[].host |= sub(".qd-ctcc.jiankunking.com"; ".qd-test.jiankunking.com")' \| jq '.items[].spec.rules[].host'fi
done
执行
NS=jkk-dev ./replace-ingress-host.sh
效果
{"apiVersion": "networking.k8s.io/v1","kind": "Ingress","metadata": {"annotations": {},"creationTimestamp": "2023-09-04T05:45:28Z","generation": 1,"labels": {"ingress-class": "internal"},"name": "test0001","namespace": "jkk-dev","resourceVersion": "17321102","uid": "224cf3aa-3791-4c31-aa45-849c99711f8a"},"spec": {"ingressClassName": "internal","rules": [{"host": "dev.qd-ctcc.jiankunking.com",//这里替换为dev.qd-test.jiankunking.com"http": {"paths": [{"backend": {"service": {"name": "jiankunking-gateway","port": {"number": 80}}},"path": "/","pathType": "Prefix"}]}}],"tls": [{"hosts": ["dev.qd-ctcc.jiankunking.com"],"secretName": "jkk-com-123456"}]},"status": {"loadBalancer": {"ingress": []}}
}
作者:jiankunking 出处:http://blog.csdn.net/jiankunking
Linux Shell 学习笔记三(主要是jq)相关推荐
- Linux shell 学习笔记(1)— 文件和目录(查看、创建、复制、软硬链接、重命名及删除操作)
1. 启动 shell /etc/passwd 文件包含了所有系统用户账户列表以及每个用户的基本配置信息: christine:x:501:501:Christine Bresnahan:/home/ ...
- Linux | Shell 学习笔记(二)Shell 流程控制 if、case、for、while| read读取输入 | 函数的使用 | cut、sed、awk、sort命令 +Demo
文章目录 参考资料 运行环境 一.流程控制 1.1 if 判断 1.2 case 语句 1.3 for 循环 1.4 while 循环 二. read 读取控制台输入 三.函数 3.1 系统函数 ba ...
- Linux shell 学习笔记(16)— shell 入门总结
1. Shell 变量 Shell 变量包括自定义变量和环境变量: 自定义变量:脚本中自己命名定义的变量,通常为局部变量,其他 Shell 程序不能访问到: 环境变量,操作系统已定义的变量,如 PAT ...
- Linux shell 学习笔记(12)— linux 信号、后台运行脚本、作业控制、定时运行任务
1. 处理信号 1.1 Linux 信号 常见的 Linux 信号如下表所示: 信号 值 描述 1 SIGHUP 挂起进程 2 SIGINT 终止进程 3 SIGQUIT 停止进程 9 SIGKILL ...
- Linux shell 学习笔记(11)— 理解输入和输出(标准输入、输出、错误以及临时重定向和永久重定向)
1. 理解输入和输出 1.1 标准文件描述符 Linux 系统将每个对象当作文件处理.这包括输入和输出进程.Linux 用文件描述符(file descriptor)来标识每个文件对象.文件描述符是一 ...
- Linux shell 学习笔记(10)— 处理用户输入(命令行读取参数、读取用户输入、超时处理)
1. 命令行参数 向 shell 脚本传递数据的最基本方法是使用命令行参数.命令行参数允许在运行脚本时向命令行添加数据. $ ./addem 10 30 本例向脚本 addem 传递了两个命令行参数( ...
- Linux shell 学习笔记(7)— 构建基本脚本(变量、重定向、管道、状态码)
1. 使用多个命令 如果要两个命令一起运行,可以把它们放在同一行中,彼此间用分号隔开. $ date ; who Mon Feb 21 15:36:09 EST 2014 Christine tty2 ...
- Linux shell 学习笔记(5)— 文件权限(添加、修改、删除用户及创建、修改群组)
1. Linux的安全性 Linux 安全系统的核心是用户账户.每个能进入 Linux 系统的用户都会被分配唯一的用户账户.用户对系统中各种对象的访问权限取决于他们登录系统时用的账户. 用户权限是通过 ...
- Linux shell 学习笔记(4)— linux 环境变量(全局变量、局部变量及变量持久化)
1. 环境变量概念及分类 bash shell 用一个叫作环境变量(environment variable)的特性来存储有关 shell 会话和工作环境的信息(这也是它们被称作环境变量的原因).这项 ...
- Linux shell 学习笔记(3)— shell 父子关系及内建命令
1. shell 类型 只要用户登录到某个虚拟控制台终端或是在 GUI 中启动终端仿真器,默认的 shell 程序就会开始运行. 默认的交互 shell 会在用户登录某个虚拟控制台终端或在 GUI 中 ...
最新文章
- 从头开始学习深度学习之卷积
- 解决在C#(.net)按字节数截取字符串最后出现乱码的问题
- 分享Kali Linux 2016.2第45周VMware虚拟机
- 21day学通python epub_21天就让你掌握Python语言,《21天学通Python》PDF版送给你去学...
- php 屏蔽mysql错误提示_PHP.ini中配置屏蔽错误信息显示和保存错误日志
- oracle无法重建em,ORACLE 11g, EM 无法启动的问题和重建
- mysql去除空格的函数_MySQL字符串尾部空格匹配的问题
- iOS开发那些事--创建基于故事板的iOS 6的HelloWorld
- void 型指针的高阶用法,你掌握了吗?
- 数据结构与算法————九九乘法表
- Cesium官方教程6--相机
- [转]20款Notepad++插件下载和介绍
- C——结构体中的函数指针
- 猿取向的规划设计模式 ——GoF《设计模式》阅读摘要(零)
- (2)css的复合选择器与特性
- linux 软键盘输入密码,Linux系统中使用屏幕键盘的方法
- “Uncaught TypeError: $(...).dataTable is not a function”
- ps做手机计算机界面,手机设计!移动设备的界面设计尺寸
- NOIP2005 篝火晚会 解题报告
- 小米android隐藏游戏,MIUI8小米手机开启隐藏选项