在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)相关推荐

  1. Linux shell 学习笔记(1)— 文件和目录(查看、创建、复制、软硬链接、重命名及删除操作)

    1. 启动 shell /etc/passwd 文件包含了所有系统用户账户列表以及每个用户的基本配置信息: christine:x:501:501:Christine Bresnahan:/home/ ...

  2. 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 ...

  3. Linux shell 学习笔记(16)— shell 入门总结

    1. Shell 变量 Shell 变量包括自定义变量和环境变量: 自定义变量:脚本中自己命名定义的变量,通常为局部变量,其他 Shell 程序不能访问到: 环境变量,操作系统已定义的变量,如 PAT ...

  4. Linux shell 学习笔记(12)— linux 信号、后台运行脚本、作业控制、定时运行任务

    1. 处理信号 1.1 Linux 信号 常见的 Linux 信号如下表所示: 信号 值 描述 1 SIGHUP 挂起进程 2 SIGINT 终止进程 3 SIGQUIT 停止进程 9 SIGKILL ...

  5. Linux shell 学习笔记(11)— 理解输入和输出(标准输入、输出、错误以及临时重定向和永久重定向)

    1. 理解输入和输出 1.1 标准文件描述符 Linux 系统将每个对象当作文件处理.这包括输入和输出进程.Linux 用文件描述符(file descriptor)来标识每个文件对象.文件描述符是一 ...

  6. Linux shell 学习笔记(10)— 处理用户输入(命令行读取参数、读取用户输入、超时处理)

    1. 命令行参数 向 shell 脚本传递数据的最基本方法是使用命令行参数.命令行参数允许在运行脚本时向命令行添加数据. $ ./addem 10 30 本例向脚本 addem 传递了两个命令行参数( ...

  7. Linux shell 学习笔记(7)— 构建基本脚本(变量、重定向、管道、状态码)

    1. 使用多个命令 如果要两个命令一起运行,可以把它们放在同一行中,彼此间用分号隔开. $ date ; who Mon Feb 21 15:36:09 EST 2014 Christine tty2 ...

  8. Linux shell 学习笔记(5)— 文件权限(添加、修改、删除用户及创建、修改群组)

    1. Linux的安全性 Linux 安全系统的核心是用户账户.每个能进入 Linux 系统的用户都会被分配唯一的用户账户.用户对系统中各种对象的访问权限取决于他们登录系统时用的账户. 用户权限是通过 ...

  9. Linux shell 学习笔记(4)— linux 环境变量(全局变量、局部变量及变量持久化)

    1. 环境变量概念及分类 bash shell 用一个叫作环境变量(environment variable)的特性来存储有关 shell 会话和工作环境的信息(这也是它们被称作环境变量的原因).这项 ...

  10. Linux shell 学习笔记(3)— shell 父子关系及内建命令

    1. shell 类型 只要用户登录到某个虚拟控制台终端或是在 GUI 中启动终端仿真器,默认的 shell 程序就会开始运行. 默认的交互 shell 会在用户登录某个虚拟控制台终端或在 GUI 中 ...

最新文章

  1. 从头开始学习深度学习之卷积
  2. 解决在C#(.net)按字节数截取字符串最后出现乱码的问题
  3. 分享Kali Linux 2016.2第45周VMware虚拟机
  4. 21day学通python epub_21天就让你掌握Python语言,《21天学通Python》PDF版送给你去学...
  5. php 屏蔽mysql错误提示_PHP.ini中配置屏蔽错误信息显示和保存错误日志
  6. oracle无法重建em,ORACLE 11g, EM 无法启动的问题和重建
  7. mysql去除空格的函数_MySQL字符串尾部空格匹配的问题
  8. iOS开发那些事--创建基于故事板的iOS 6的HelloWorld
  9. void 型指针的高阶用法,你掌握了吗?
  10. 数据结构与算法————九九乘法表
  11. Cesium官方教程6--相机
  12. [转]20款Notepad++插件下载和介绍
  13. C——结构体中的函数指针
  14. 猿取向的规划设计模式 ——GoF《设计模式》阅读摘要(零)
  15. (2)css的复合选择器与特性
  16. linux 软键盘输入密码,Linux系统中使用屏幕键盘的方法
  17. “Uncaught TypeError: $(...).dataTable is not a function”
  18. ps做手机计算机界面,手机设计!移动设备的界面设计尺寸
  19. NOIP2005 篝火晚会 解题报告
  20. 小米android隐藏游戏,MIUI8小米手机开启隐藏选项

热门文章

  1. leetcode 2055.蜡烛之间的盘子(js)
  2. jetson-nano多目标追踪过线计数
  3. MDC和NDC(log4j打印自定义属性)
  4. 研华工控机主机AIMB-501主板Win7系统如何开双VGA显示打开副屏显示
  5. mysql把查询结果集插入到表里
  6. 2023.04.04学习汇报
  7. iqoo手机计算机背景变白,界面背景一刷新就变白色这是为什么
  8. 班委竞选(离散数学课后习题 p45 29)
  9. 计算机电路基础实验一仪器使用,数字逻辑实验指导书学生版.doc
  10. Linux命令-cat