Skip to content

Latest commit

ย 

History

History
126 lines (71 loc) ยท 2.77 KB

File metadata and controls

126 lines (71 loc) ยท 2.77 KB

Shell script ๊ธฐ์ดˆ

https://google.github.io/styleguide/shellguide.html ๋ฅผ ๊ธฐ์ดˆํ•˜์—ฌ ๊ณต๋ถ€ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

โฆฟ ๋“ค์–ด๊ฐ€๊ธฐ ์ „, ํฐ๊ทธ๋ฆผ

๋จผ์ € ํฐ ๊ทธ๋ฆผ์„ ์žก๊ณ  ๊ฐ€๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์‰˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์™œ ์—ด๋ฆฐ ๋งˆ์Œ์œผ๋กœ ๊ณต๋ถ€ํ•˜๋ ค๊ณ  ํ•˜๋Š”์ง€ ์–ธ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค. ์•ž์œผ๋กœ ์—ฐ์Šตํ•  Shell์€ Application ์œ„์น˜์—์„œ ์ €ํฌ๊ฐ€ ์›ํ•˜๋Š” ๋ช…๋ น์„ ์ปค๋„์— ์ „๋‹ฌํ•ด์ค„ ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค.

image

โฆฟ ์‰˜์ด๋ž€?

์šด์˜์ฒด์ œ์™€ ์‚ฌ์šฉ์ž ์‚ฌ์ด์˜ ์ค‘๊ฐ„๋‹ค๋ฆฌ ์—ญํ• ์„ ํ•ด์ฃผ๋Š” ๋„๊ตฌ๋กœ, ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•˜๋Š” ๋ช…๋ น์„ ์ฝ๊ณ  ํ”„๋กœ์„ธ์Šค ์‹คํ–‰์‹œํ‚ค๋Š” ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ, ์‰˜์„ ์ด์šฉํ•ด์„œ ์šด์˜์ฒด์ œ์— ๋ช…๋ น์„ ๋‚ด๋ฆด ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‰˜๊ณผ ์ปค๋„, ์šด์˜์ฒด์ œ์—์„œ ์ผ์–ด๋‚˜๋Š” ์ „๋ถ€๋ฅผ ์•Œ๋ ค๊ณ  ์‹œ์ž‘ํ•˜๋Š” ๊ณต๋ถ€๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๋ฌธ์ œ์™€ ๋งˆ์ฃผํ–ˆ์„ ๋•Œ, ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋˜ ํ•˜๋‚˜์˜ ๋ฐฉ๋ฒ•์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ธฐ๋Œ€๊ฐ์œผ๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๊ฒƒ์„ ๋ฐฐ์šฐ๋Š” ๊ฒƒ์ด ํž˜๋“ค์ง€ ์•Š์„ ๋•Œ, ํ•˜๋‚˜๋ผ๋„ ๋” ๋ฐฐ์›Œ๋ด…์‹œ๋‹ค. ์‰˜ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ๋Š” bash, sh, ksh, csh ๋“ฑ์ด ์žˆ๊ณ , ์œˆ๋„์šฐ์˜ ๊ฒฝ์šฐ๋Š” explorer.exe ๊ฐ€ ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค.

โฆฟ ์‰˜ ์Šคํฌ๋ฆฝํŠธ๋ž€?

์‰˜ ์Šคํฌ๋ฆฝํŠธ๋Š” ์‰˜ ๋ช…๋ น์–ด๋“ค์„ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ๋ฐฉ์‹์œผ๋กœ ์‹คํ–‰ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ์ž…๋‹ˆ๋‹ค.

โฆฟ ์‚ฌ์šฉํ•˜๊ธฐ

1. ์‹คํ–‰

sh hello.sh    # bash hello.sh ๋„ ๊ฐ€๋Šฅ

2. ์ฃผ์„

#

cf) ๋ช…๋ น์–ด ๊ตฌ๋ถ„ ;

3. ๋„์ž…

#!/bin/bash

#! : ์ด ํŒŒ์ผ์ด ์–ด๋–ค ๋ช…๋ น์–ด ์ง‘ํ•ฉ์ธ์ง€ ์‹œ์Šคํ…œ์— ์•Œ๋ ค์ฃผ๊ฒ ๋‹ค.

/bin/bash : ํ˜„์žฌ๋Š” ๋ฆฌ๋ˆ…์Šค์— ๊ธฐ๋ณธ ํƒ‘์žฌ๋œ ์ผ๋ฐ˜์ ์ธ ์‰˜์ธ bash์ด๋‹ค.

4. ํ•จ์ˆ˜

hi(){
	# ๋‚ด์šฉ
}

5. ๋ณ€์ˆ˜

๋ณ€์ˆ˜์— ํƒ€์ž… ๊ตฌ๋ถ„ ์—†์Œ.

a=3         # '='์•ž๋’ค ๊ณต๋ฐฑ X (declare a=3๊ณผ ๋™์ผ)
echo $a     # ๋ณ€์ˆ˜ ์‚ฌ์šฉ ์‹œ์—๋Š” '$'(์•„๋‹ˆ๋ฉด, ๋ฌธ์ž์ทจ๊ธ‰๋จ)
unset a     # ๋ณ€์ˆ˜ํ•ด์ œ

์ง€์—ญ๋ณ€์ˆ˜, ์ „์—ญ๋ณ€์ˆ˜๋Š” ๊ธฐ์กด ๊ฐœ๋…๊ณผ ๋™์ผํ•จ.

ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๋ผ๋Š” ๊ฒƒ์ด ์žˆ๋Š”๋ฐ, ์ž์‹ ํ”„๋กœ์„ธ์Šค์—์„œ๋„ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋จ.

export a=3    # ํ™˜๊ฒฝ๋ณ€์ˆ˜
export -n a   # ํ™˜๊ฒฝ๋ณ€์ˆ˜ -> ์ง€์—ญ๋ณ€์ˆ˜ 
env           # ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ถœ๋ ฅ

์ฝ๊ธฐ์ „์šฉ๋ณ€์ˆ˜ ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ const์™€ ๋™์ผํ•จ.

readonly a=3

6. ์˜ˆ์•ฝ ๋ณ€์ˆ˜

๋ฌธ์ž ์„ค๋ช