由于我更像是一名网络人员,因此我需要在这方面获得一些帮助,因此我会在提问之前解释一下我想要做什么。
我正在创建批处理脚本,它将:
- 来自外部服务器的GET请求(json文件),接收数据,本地保存为.json
- 使用 JQ 导航 json结果[0].标题
- 使用“标题”作为curl请求的参数
一旦我在本地有了该文件。我会使用 JQ 查找对象中的数据
cat file.json | jq '.results[0].title' > $1 &&
curl -i -H "Accept: application/html" -H "Content-Type: application/html" -X GET http://example.com/test/$1 > test.txt
是否可以在命令行“$1”中设置局部变量以在管道命令中临时使用?
我离开这里了吗?
答案1
虽然$1
通常具有特殊含义(传递给脚本/函数/等的第一个参数),但您确实可以将命令的输出保存在变量中。
title=$(jq -r '.results[0].title' file.json)
curl -i -H "Accept: application/html" -H "Content-Type: application/html" -X GET http://example.com/test/"$title" > test.txt
第一部分运行命令jq -r '.results[0].title' file.json
并将输出保存stdout
到变量中title
。然后我们运行curl
命令并将变量展开title
为 URL 的一部分。