728x90
반응형
Bash Script에서 curl과 jq 사용법 (외부 프로그램 활용하기)
Bash 스크립트는 단순히 명령어를 나열하는 수준을 넘어 외부 프로그램을 활용하여 더욱 강력하고 유연한 스크립트를 작성할 수 있습니다. 특히 API 호출 및 JSON 데이터 처리를 위해 curl과 jq는 매우 유용합니다. 이번 포스팅에서는 이 두 가지 프로그램을 사용하는 방법과 예제를 통해 실용적인 스크립트를 작성하는 방법을 알아보겠습니다.
1. curl의 소개 및 기본 사용법
curl은 URL을 통해 데이터를 전송하거나 가져오는 데 사용되는 명령어입니다. HTTP, HTTPS, FTP 등 다양한 프로토콜을 지원합니다.
1.1 curl의 기본 형식
curl [옵션] [URL]1.2 주요 옵션
-X: 요청 메서드 지정(GET, POST, PUT, DELETE 등)-d: POST 요청 시 전송할 데이터 지정-H: 헤더 정보 추가-o: 출력 결과를 파일로 저장-s: 진행 상태나 에러 메시지를 숨김 (silent mode)
1.3 간단한 예제: 웹 페이지 가져오기
curl -s https://jsonplaceholder.typicode.com/posts/1위 명령어는 JSONPlaceholder라는 테스트 API에서 특정 게시글의 데이터를 가져옵니다.
2. jq의 소개 및 기본 사용법
jq는 JSON 데이터를 필터링, 변환, 출력하는 데 사용되는 프로그램입니다. JSON 데이터를 다루는 작업이 많은 경우 매우 유용합니다.
2.1 jq의 기본 형식
jq [필터 표현식]2.2 주요 기능
- 특정 키의 값 추출:
.key - 배열의 요소 접근:
[index] - 조건부 필터링:
select(조건) - 새로운 JSON 생성:
{key: value}
2.3 간단한 예제: JSON 데이터에서 특정 값 추출
curl -s https://jsonplaceholder.typicode.com/posts/1 | jq '.title'위 명령어는 게시글 데이터에서 title 값을 추출합니다.
3. 실용적인 예제: API 데이터 가공하기
이번에는 curl과 jq를 조합하여 JSON 데이터를 가져오고 가공하는 스크립트를 작성해 보겠습니다.
3.1 스크립트 예제: 특정 유저의 게시글 가져오기
#!/bin/bash
# 특정 사용자 ID
USER_ID=1
# API URL
API_URL="https://jsonplaceholder.typicode.com/posts"
# 사용자 ID로 필터링된 게시글 가져오기
response=$(curl -s "${API_URL}?userId=${USER_ID}")
# 게시글의 ID와 제목 출력
echo "사용자 ID ${USER_ID}의 게시글 목록:"
echo "$response" | jq -r '.[] | "ID: \(.id), Title: \(.title)"'실행 결과 (예시)
사용자 ID 1의 게시글 목록:
ID: 1, Title: sunt aut facere repellat provident occaecati excepturi optio reprehenderit
ID: 2, Title: qui est esse
...3.2 스크립트 예제: 새로운 게시글 생성
#!/bin/bash
# API URL
API_URL="https://jsonplaceholder.typicode.com/posts"
# POST 데이터 생성
NEW_POST=$(jq -n \
--arg userId "1" \
--arg title "New Post Title" \
--arg body "This is the content of the new post." \
'{userId: $userId, title: $title, body: $body}')
# POST 요청 보내기
response=$(curl -s -X POST -H "Content-Type: application/json" -d "$NEW_POST" "$API_URL")
# 응답 출력
echo "새 게시글 생성 결과:"
echo "$response" | jq실행 결과 (예시)
새 게시글 생성 결과:
{
"id": 101,
"userId": "1",
"title": "New Post Title",
"body": "This is the content of the new post."
}4. 추가 팁
4.1 에러 처리
curl과 jq를 사용할 때 발생할 수 있는 에러를 처리하는 방법도 중요합니다.
#!/bin/bash
API_URL="https://jsonplaceholder.typicode.com/posts/1"
# API 호출
response=$(curl -s -w "%{http_code}" -o temp.json "$API_URL")
status_code=${response: -3}
if [ "$status_code" -eq 200 ]; then
cat temp.json | jq
else
echo "API 호출 실패. 상태 코드: $status_code"
fi
rm -f temp.json4.2 jq 필터 고급 활용
- 특정 키 제외:
. | del(.key) - 조건부 배열 필터링:
.[] | select(.userId == 1)
결론
curl과 jq를 활용하면 Bash 스크립트에서 API 호출과 JSON 데이터 처리를 손쉽게 구현할 수 있습니다. 위의 예제를 참고하여 여러분의 프로젝트에 맞는 스크립트를 작성해 보세요.
반응형
'Linux Bash shell script' 카테고리의 다른 글
| Bash Shell Script 서버 상태 모니터링 (0) | 2025.02.10 |
|---|---|
| Bash Shell Script로 반복 작업 자동화하기 (0) | 2025.02.09 |
| Bash Shell Script 실행 속도 최적화 (0) | 2025.02.07 |
| Bash Shell Script awk와 sed를 활용한 데이터 처리 (0) | 2025.02.06 |
| Bash Shell Script - 정규표현식과 grep (0) | 2025.02.05 |