自己常用的一些Shell记录

最近在部署局域网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 \n打包人: $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") 

posted @ 2021-10-16 12:47  布尔-  阅读(65)  评论(0编辑  收藏  举报