一 curl与shell结合的细节
① 问题引入
需求: 传递变量以'json数据'给curl
② 方式1 反斜杠\转义
1、转义'内'层'双引号' --> '了解即可'
特点: 可读性'低',并且很'复杂'
2、转义'外'层'单引号' --> '推荐'
另一种方式: 只转义'外层单引号'
实质:通过转义'外层的单引号',使'内层双引号中'的'$variable'得以'被解析'
③ 方式2
单引号周围添加双引号
1、案例 --> '拼接'
做法: 实质是'字符串拼接',注意是'成对'的
补充: --data中json key对应'值'是需要"双引号"包括的'字符串'
2、 '原理'解读
④ 方式3 了解
1、'@-' 重点
2、'@<' 重点
3、-d "$(cat <<EOF ... EOF)"
4、'$@-' 熟悉
⑤ 方式4 最佳实践
核心: 创建一个'生成数据'的'函数'
参考连接
⑥ 方式5
说明: 自己常用的'动态'方式
原理:如果json数据体不变,只是'修改了数据',则sed '修改' 指定字段之后,curl直接'cat即可'
⑦ glob通配
url使用'通配符' -->一般是'有规律'的
# n=1,n=2...n=10
curl http://www.wolf.com/work/test.php?n=[1-10]
# 设定步长为3,n=1,n=4...
curl http://www.wolf.com/work/test.php?n=[1-10:3]
# n=1,n=3
curl http://www.wolf.com/work/test.php?n={1,3}
常见:[]、{}、.、*
-g/--globoff 禁用'网址序列'和'范围使用{}和[]'
⑧ 通过curl从url中执行bash
1、'前置'配置
细节点: 如果文件后缀是'txt',则浏览器会'展示','不会下载'
2、'方式1' curl -s url | bash
说明:常用'首页'的方式,'index.html'存储'脚本'内容
常见方式:curl -sSfL https://www.baidu.com | bash
2、'方式2' curl -s | bash -s arg1 arg2 .. '无名参'
下面: bash -s '位置参数'
3、方式3 '-- 具名传参' 更复杂
4、方式'4'
sh <(curl -s https://www.baidu.com)