ShellScript

[ShellScript] json ํ˜•์‹์˜ ๋ฌธ์ž์—ด์„ ์‰ฝ๊ฒŒ ๋งŒ๋“ค๊ธฐ (heredoc)

junnnhhh 2026. 5. 6. 13:58
728x90

๐Ÿ’ฃ ์ƒํ™ฉ

๋‹ด๋‹น ์‹œ์Šคํ…œ์—์„œ ๋ฐฐ์น˜ ๋ชจ๋“ˆ์—์„œ ์นดํ”„์นด ์ฒ˜๋ฆฌ ์‹œ, pub์ด ์ œ๋Œ€๋กœ ๋˜์ง€ ์•Š์•˜๋‹ค... (์›์ธ์€ ํŒŒ์•… ์ค‘...)

์ด๊ฒŒ UMS๋กœ SMS๋ฅผ ์†ก์‹ ํ•˜๊ฒŒ๋” ํ•˜๋Š” ํ† ํ”ฝ์„ ์ „๋‹ฌํ•˜๋Š”๊ฑด๋ฐ, SMS ๋ฐœ์†ก์ด ์•ˆ๋ผ์„œ ๊ธ‰ํ•˜๊ฒŒ ์ˆ˜๊ธฐ๋กœ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์•ผํ–ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์˜จ๋ผ์ธ ๋ชจ๋“ˆ์—์„œ๋Š” ์นดํ”„์นด๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ•„์š”ํ•œ request๋ฅผ ๊ตฌ์„ฑํ•˜์—ฌ api ํ˜ธ์ถœ ํ˜•ํƒœ๋ฅผ ๋งŒ๋“ค๊ณ ,

์ด๊ฑธ shell๋กœ ์ž‘์„ฑํ•˜์—ฌ curl๋กœ api๋ฅผ ์˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ž„์‹œ ์ฒ˜๋ฆฌํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.

 

์ด ๊ณผ์ •์—์„œ application/json์œผ๋กœ ๋ณด๋‚ด์•ผํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— json ํ˜•์‹์„ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š”๋ฌธ์ž์—ด๋กœ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ

์ฐพ์•„๋ณด์•˜๋‹ค.


โ“heredoc๋ž€?

๐Ÿ‘‰ heredoc์€ ์‰˜์—์„œ ์—ฌ๋Ÿฌ ์ค„ ๋ฌธ์ž์—ด์„ ํŽธํ•˜๊ฒŒ ์ž…๋ ฅํ•˜๋Š” ๋ฌธ๋ฒ• (JSON, SQL, ์Šคํฌ๋ฆฝํŠธ ๋ณธ๋ฌธ ๋งŒ๋“ค ๋•Œ ์œ ์šฉ)

 

๐Ÿ”ฅ๊ธฐ๋ณธ ํ˜•ํƒœ

cat <<EOF
hello
world
EOF


# ์ถœ๋ ฅ
# hello
# world

 

โœ”๏ธ ์“ฐ๋Š” ์ด์œ 

 

๐Ÿ‘‰ ๋ณดํ†ต ์—ฌ๋Ÿฌ ์ค„ ๋ฌธ์ž์—ด ๋งŒ๋“ค๋ ค๋ฉด ๋”ฐ์˜ดํ‘œ/์ด์Šค์ผ€์ดํ”„ ์ง€์˜ฅ์ด ์ƒ๊น€

๋”ฐ๋ผ์„œ, ํฌ๋งท์„ ๋ถ™์—ฌ๋„ฃ๊ณ  ๊ฐ ๋”ฐ์˜ดํ‘œ์— ๋ฐฑ์Šฌ๋ž˜์‰ฌ๊ฐ€ ์•ˆ๋“ค์–ด๊ฐ„ ๊ฒฝ์šฐ, ์ˆ˜๊ธฐ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋ถˆํŽธํ•˜๊ณ , ๋ณด๊ธฐ์—๋„๋ถˆํŽธํ•จ

์ด๋ฅผ ํ•ด์†Œํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด heredoc ์ด๋‹ค.

 


๐Ÿ“– ๋ฐฉ๋ฒ•

1๏ธโƒฃ ์ง์ ‘ ๋ฐฑ์Šฌ๋ž˜์‰ฌ๋ฅผ ์ž…๋ ฅ ( ๏ผผ )

dataStr="
{
  \"data\": \"${dataSample}\"
}
"

 

๐Ÿ‘‰ key, value ๊ฐ๊ฐ ์Œ๋”ฐ์˜ดํ‘œ ์•ž์— ๋ฐฑ์Šฌ๋ž˜์‰ฌ๋ฅผ ์ž…๋ ฅํ•ด์•ผํ•จ.

 

2๏ธโƒฃ heredoc ์‚ฌ์šฉ

read -r -d '' dataStr <<EOF
{
  "data": "${dataSample}"
}
EOF

 

์œ„ ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์ด์šฉํ•˜๋ฉด dataStr์ด๋ผ๋Š” ๋ณ€์ˆ˜์— json์„ ๋ฌธ์ž์—ด ํ˜•์‹์œผ๋กœ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.

728x90

'ShellScript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ShellScript] Shell์—์„œ EOF์˜ ์˜๋ฏธ  (0) 2026.05.06