久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Shell工具jsondiff.sh怎么用

170次閱讀
沒有評論

共計 1886 個字符,預計需要花費 5 分鐘才能閱讀完成。

今天就跟大家聊聊有關 Shell 工具 jsondiff.sh 怎么用,可能很多人都不太了解,為了讓大家更加了解,丸趣 TV 小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

我最近忙著重構一個歷史項目,不過由于客觀條件所限,沒有測試用例可用,以至于我不得不通過人肉對比新舊服務器的結果集是否一致來判斷對錯。既然說懶惰是程序員的美德,所以我想還是寫一個工具吧,加之結果集為 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= URI  --old= IP  --new= IP  } 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 怎么用有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注丸趣 TV 行業資訊頻道,感謝大家的支持。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-16發表,共計1886字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 达尔| 马边| 南昌市| 河曲县| 金坛市| 吴忠市| 泰宁县| 阿克陶县| 万全县| 五莲县| 保定市| 陆川县| 额尔古纳市| 黎城县| 双辽市| 宁武县| 自治县| 积石山| 连南| 辉南县| 大港区| 巢湖市| 鄂伦春自治旗| 石棉县| 金阳县| 彭阳县| 寿阳县| 准格尔旗| 贞丰县| 镇巴县| 环江| 扎鲁特旗| 岢岚县| 安达市| 平乡县| 沈丘县| 铁力市| 保靖县| 东宁县| 合阳县| 滨海县|