一、shell中使用变量替换curl中的部分参数
需要注意的是:使用变量替换shell脚本curl命令中的部分参数时,单引号中的变量也需要使用单引号括起来,使用双引号参数解析会不正确。这个问题折腾了我很久,切记!!!
下面的例子展示了如何使用变量 Bucket_ID 替换 curl 命令中的参数,这个例子完成的工作内容是:
- 从 GARDEN_ID.txt 文件中通过 awk 命令获取指定的变量 Bucket_ID;
- 之后在 curl 指令中使用 Bucket_ID 变量替换部分参数;
- 对 curl 获取到的返回结果进行格式化处理,输出到目标文件中。
Shell脚本中循环的使用请参考,Shell脚本中如何使用“循环”遍历“数组”中的元素
#!bin/bash
GARDEN_ID=123456
DIR="../account/tmp"
if [ ! -f "${GARDEN_ID}.txt"]
then
echo "There is no ${GARDEN_ID}.txt !"
fi
# Get Bucket_ID from xx.txt file
for Bucket_ID in `awk -F' ' '{print $1}' ${GARDEN_ID}.txt`
do
# Get Target Variable Realtime_size
# 暂时没找到方法将curl获取的信息,通过管道命令直接传递给awk进行文本处理
# 所以先将curl获取的数据输出到文本文档中,然后从文本文档获取数据进行处理
echo `curl http://127.0.0.1:/xx/yy/mm/nn.cgi -d 'rtx=xx&unit=B&mfactor=5&area=xx&query_data=[{"business_id":"10022853/'${Bucket_ID}'","query_date":"20200522","target":"storage"}]'` > ${DIR}/${Bucket_ID}.txt
Realtime_size=`awk -F',' '{print $5}' ${DIR}/${Bucket_ID}.txt`
rm ${DIR}/${Bucket_ID}.txt
# Output File_size and Realtime_size into xx.txt file
echo "${Bucket_ID} ${Realtime_size}" >> ${GARDEN_ID}_filesize.txt
done