最近在部署局域网Jenkins打包和Apache服务,遇到一些值得记录的过程。
1.输出字符写入文件,追加在文件末尾
echo "123" >> 123.txt
2.输出字符写入文件,覆盖文字
echo "123" > 123.txt
3.curl命令在post请求带嵌套JSon参数,且参数是shell变量时需要对参数转义 (curl用法指南: http://www.ruanyifeng.com/blog/2019/09/curl-reference.html)
1 content="fir_im: $firUrl 打包人: $BUILD_USER $Branch" 2 echo $content 3 4 curl "https://XXX" 5 -H "Content-Type: application/json" 6 -d "{ 7 "msgtype": "text", 8 "text": { 9 "content": "$content" 10 } 11 }"
4.curl将返回值写入本地文件
curl https://ip.taobao.com/getIpInfo.php?ip=192.168.1.30 > ip.json
5.利用jq在Shell中读取json字段 (jq官方手册: https://stedolan.github.io/jq/tutorial/)
cat ip.json | jq .data.QUERY_IP
6.将curl返回值保存在shell变量中
ipResult=$(curl https://ip.taobao.com/getIpInfo.php?ip=192.168.1.30)
7.Mac下Shell使用sed命令报错,需要使用gsed,参考https://www.zhiqiexing.com/87.html
安装
brew install gnu-sed
8.sed替换所有原字符串
sed 's/原字符串/替换字符串/g'
9.sed查找文件中字符串所在的行,且用新字符替换整行内容,重新保存到文件中
sed -i "s/^.*原字符串.*$/新字符/" useradd.txt ,这个命令如果原字符串里带有一些如/这种字符串,会导致报错。所以下面使用两个命令来实现整行字符串替换操作。
例如,原html其中一部分为
a.先找到字符串"{{"所在的行 lineNum=$(sed -n -e "/{{/=" index.html)
b.将整行替换
newStr="<p>ipa更新时间:{{2021-10-18 12:00:00}}</p>" gsed -i "${lineNum}c $newStr" index.html
替换后的结果如下
10.grep查找字符串和查找除xx之外的字符串
grep xx grep -v xx
11.截取指定字符串后面的字符(参考$结合各种符号的使用: https://www.cnblogs.com/nkwy2012/p/9171408.html)
willCatStr=$(cat firlog.txt | grep "Published succeed:") firUrl=`echo ${willCatStr#*succeed:}` # fir下载url
12.日期格式化输出
curTime=$(date "+%Y-%m-%d %H:%M:%S")