728x90
반응형
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.json
4.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 |
awk와 sed를 활용한 데이터 처리 (0) | 2025.02.06 |
Bash Shell Script - 정규표현식과 grep (0) | 2025.02.05 |