中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Shell工具jsondiff.sh怎么用

發布時間:2021-12-14 11:13:21 來源:億速云 閱讀:193 作者:柒染 欄目:系統運維

今天就跟大家聊聊有關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=<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怎么用有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

柳州市| 仁布县| 长顺县| 金塔县| 宜良县| 无棣县| 平山县| 高阳县| 荔浦县| 渑池县| 日喀则市| 鸡东县| 珠海市| 榕江县| 滦南县| 平湖市| 喀什市| 瓦房店市| 汨罗市| 淮阳县| 湖北省| 惠东县| 泽库县| 东丽区| 宝鸡市| 中方县| 嵊泗县| 图片| 琼结县| 治县。| 奉新县| 延寿县| 盐源县| 招远市| 新源县| 云浮市| 台中县| 德安县| 墨脱县| 建平县| 德清县|