
저는 네트워크 전문가이기 때문에 이에 대한 도움이 필요하므로 질문하기 전에 제가 하려는 일이 무엇인지 설명하겠습니다.
다음을 수행하는 배치 스크립트를 만들고 있습니다.
- 외부 서버로부터 GET 요청(json 파일), 데이터 수신, 로컬에 .json으로 저장
- JQ를 사용하여 json 탐색결과[0].제목
- 컬 요청의 매개변수로 "제목" 사용
일단 로컬에 파일이 있습니다. 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의 일부로 확장합니다.