#!/bin/bash
### 方法簡要說明:
### 1. 是先查找一個字符串:帶雙引號的key。如果沒找到鹃答,則直接返回defaultValue乎澄。
### 2. 查找最近的冒號,找到后認(rèn)為值的部分開始了测摔,直到在層數(shù)上等于0時找到這3個字符:,}]置济。
### 3. 如果有多個同名key,則依次全部打臃姘恕(不論層級舟肉,只按出現(xiàn)順序)
### @author lux feary
###
### 3 params: json, key, defaultValue
function getJsonValuesByAwk() {
awk -v json="$1" -v key="$2" -v defaultValue="$3" 'BEGIN{
foundKeyCount = 0
while (length(json) > 0) {
# pos = index(json, "\""key"\""); ## 這行更快一些,但是如果有value是字符串查库,且剛好與要查找的key相同路媚,會被誤認(rèn)為是key而導(dǎo)致值獲取錯誤
pos = match(json, "\""key"\"[ \\t]*?:[ \\t]*");
if (pos == 0) {if (foundKeyCount == 0) {print defaultValue;} exit 0;}
++foundKeyCount;
start = 0; stop = 0; layer = 0;
for (i = pos + length(key) + 1; i <= length(json); ++i) {
lastChar = substr(json, i - 1, 1)
currChar = substr(json, i, 1)
if (start <= 0) {
if (lastChar == ":") {
start = currChar == " " ? i + 1: i;
if (currChar == "{" || currChar == "[") {
layer = 1;
}
}
} else {
if (currChar == "{" || currChar == "[") {
++layer;
}
if (currChar == "}" || currChar == "]") {
--layer;
}
if ((currChar == "," || currChar == "}" || currChar == "]") && layer <= 0) {
stop = currChar == "," ? i : i + 1 + layer;
break;
}
}
}
if (start <= 0 || stop <= 0 || start > length(json) || stop > length(json) || start >= stop) {
if (foundKeyCount == 0) {print defaultValue;} exit 0;
} else {
print substr(json, start, stop - start);
}
json = substr(json, stop + 1, length(json) - stop)
}
}'
}
app_path=$1
cd $app_path
if [ ! -d "XXX.app" ];then
echo "XXX.app 不存在"
exit
fi
rm -rf Payload/
rm -f Payload.ipa
mkdir Payload
mv -f XXX.app Payload/
zip -qr Payload.zip Payload/*
mv Payload.zip Payload.ipa
upload_result=$(curl -X POST -H 'Content-Type: multipart/form-data' -F 'file=@Payload.ipa' -F '_api_key=XXX' https://www.pgyer.com/apiv2/app/upload)
qrcode=$(getJsonValuesByAwk "$upload_result" "buildQRCodeURL" "defaultValue")
qrcode=$(sed -e 's/^"http://' -e 's/"$//' <<<"$qrcode")
screenshot="![screenshot](${qrcode})"
curl 'https://oapi.dingtalk.com/robot/send?access_token=XXX' \
-H 'Content-Type: application/json' \
-d '{
"msgtype": "markdown",
"markdown": {
"title":"構(gòu)建成功,本地ipa文件上傳成功",
"text": "### 本地ipa文件上傳成功\n'${screenshot}'"
}
}'
本地app文件打包為ipa并上傳蒲公英發(fā)釘釘通知砂竖,shell的json解析
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來腺占,“玉大人淤袜,你說我怎么就攤上這事∷ゲ” “怎么了铡羡?”我有些...
- 文/不壞的土叔 我叫張陵,是天一觀的道長意鲸。 經(jīng)常有香客問我烦周,道長,這世上最難降的妖魔是什么怎顾? 我笑而不...
- 正文 為了忘掉前任读慎,我火速辦了婚禮,結(jié)果婚禮上槐雾,老公的妹妹穿的比我還像新娘夭委。我一直安慰自己,他們只是感情好蚜退,可當(dāng)我...
- 文/花漫 我一把揭開白布闰靴。 她就那樣靜靜地躺著,像睡著了一般钻注。 火紅的嫁衣襯著肌膚如雪蚂且。 梳的紋絲不亂的頭發(fā)上,一...
- 文/蒼蘭香墨 我猛地睜開眼玄括,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了肉瓦?” 一聲冷哼從身側(cè)響起遭京,我...
- 正文 年R本政府宣布慌申,位于F島的核電站陌选,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蹄溉。R本人自食惡果不足惜咨油,卻給世界環(huán)境...
- 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望柒爵。 院中可真熱鬧役电,春花似錦、人聲如沸棉胀。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至霎挟,卻和暖如春窝剖,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背酥夭。 一陣腳步聲響...