Shell工具jsondiff.sh怎么用
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,今天就跟大家聊聊有关Shell工具jsondiff.sh怎么用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。我最近忙着重构一个历史项目,不过由
千家信息网最后更新 2026年11月02日Shell工具jsondiff.sh怎么用
今天就跟大家聊聊有关Shell工具jsondiff.sh怎么用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
我最近忙着重构一个历史项目,不过由于客观条件所限,没有测试用例可用,以至于我不得不通过人肉对比新旧服务器的结果集是否一致来判断对错。既然说懒惰是程序员的美德,所以我想还是写一个工具吧,加之结果集为JSON,于是便有了jsondiff.sh。
逻辑很简单,无非就是通过curl在不同的服务器上取得结果集,然后diff即可,不过这里有几点需要注意的地方:首先,JSON就一行,直接diff会失去意义;其次,JSON中汉字会被编码,不利于查看;另外,JSON中字段顺序是无所谓的,所以diff前***排序。说明一下,在格式化JSON数据的时候,我没有用Bash,而是用的PHP:
#!/bin/bash RM=/bin/rm PHP=/usr/bin/php CURL=/usr/bin/curl DIFF=/usr/bin/diff VIMDIFF=/usr/bin/vimdiff COLORDIFF=/usr/bin/colordiff usage() { echo "Usage: $0 --uri= --old= --new=" } format() { $PHP -R ' function ksort_recursive(&$array) { if (!is_array($array)) { return; } ksort($array); foreach (array_keys($array) as $key) { ksort_recursive($array[$key]); } } $options = JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE; $array = json_decode($argn, true); ksort_recursive($array); echo json_encode($array, $options); ' } request() { $CURL -s -H "Host: $1" "http://$2$3" } eval set -- $( getopt -q -o "h" -l "host:,uri:,old:,new:,vim,help" -- "$@" ) while true; do case "$1" in --host) HOST=$2; shift 2;; --uri) URI=$2; shift 2;; --old) OLD=$2; shift 2;; --new) NEW=$2; shift 2;; --vim) VIM="Y"; shift 1;; -h|--help) usage; exit 0;; --) break;; esac done if [[ -z "$URI" || -z "$OLD" || -z "$NEW" ]]; then usage exit 1 fi if [[ -z "$HOST" ]]; then HOST="www.foobar.com" fi OLD_FILE=$(mktemp) NEW_FILE=$(mktemp) request "$HOST" "$OLD" "$URI" | format > $OLD_FILE request "$HOST" "$NEW" "$URI" | format > $NEW_FILE if [[ "$VIM" == "Y" ]]; then $VIMDIFF $OLD_FILE $NEW_FILE elif [[ -x "$COLORDIFF" ]]; then $COLORDIFF -u $OLD_FILE $NEW_FILE else $DIFF -u $OLD_FILE $NEW_FILE fi $RM -f $OLD_FILE $RM -f $NEW_FILE 其中「getopt」的用法值得注意一下,相关参考资料如下:
Getopt in Bash Bash: Preserving Whitespace Using set and eval
虽然我的Shell水平有限,但是我尽可能写得易用:在diff的时候,允许使用多种工具,缺省情况下会优先使用「colordiff」,需要的话还可以激活「vimdiff」。
看完上述内容,你们对Shell工具jsondiff.sh怎么用有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
工具
内容
结果
时候
服务器
服务
不同
懒惰
一致
无所谓
一行
人肉
参考资料
地方
多种
字段
客观
对错
就是
尽可能
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
伟宏互联网科技
互联网科技产业
互联网和科技技术
北京互联网络科技有限公司
互联网科技ppt模板
亿账通互联网科技
互联网科技logo设计
伴你行互联网科技有限公司
盛创互联网科技有限公司
富国互联网科技创新基金
玖二柒互联网科技公司待遇
中国科技互联网公司收入
承德科技产业互联网发展
科技互联网大厂
重庆互联网医院沙龙医盟信息科技
想开互联网科技公司怎么样
互联网领先科技活动
马化腾互联网科技教学
保山浩联互联网科技有限公司
中国主要互联网科技公司
互联网新科技
亿策互联网科技
互联网高科技股票
中盈科技互联网信息有限公司
宝灵互联网科技有限公司
佛山市拉法互联网科技有限公司
互联网金融科技公司的优势
云南省自由互联网科技有限公司
四川互联网展示科技馆设计
西安有哪些互联网高科技企业