SlideShare a Scribd company logo
Shell Part 2
http://rainbow.sunmoon.ac.kr/~yypark
http://ubilab.sunmoon.ac.kr
๋ฐฐ์‹œ ์‰˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
(๊ธฐ๋ณธ)
3
์‰˜ ์Šคํฌ๋ฆฝํŠธ
 ๋ช…๋ น์–ด๊ฐ€ ๋ช…๋ นํ–‰์—์„œ๊ฐ€ ์•„๋‹ˆ๋ผ ํŒŒ์ผ ์•ˆ์—์„œ ์‹คํ–‰
๋  ๋•Œ, ์ด ํŒŒ์ผ์„ ์‰˜ ์Šคํฌ๋ฆฝํŠธ๋ผ ํ•จ
 ๋Œ€ํ™”ํ˜• ๊ธฐ๋Šฅ์œผ๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š์Œ
 BASH_ENV ํ™˜๊ฒฝ๋ณ€์ˆ˜์—์„œ ์ง€์ •ํ•œ ํŒŒ์ผ
(โ€˜BASH_ENV ํŒŒ์ผโ€™)์„ ์‹คํ–‰ํ•จ (.bashrc)
 ์ด๋Ÿฌํ•œ BASH_ENV ํŒŒ์ผ์„ ์ฝ์–ด๋“ค์ธ ํ›„, ์‰˜์€ ์Šค
ํฌ๋ฆฝํŠธ ์•ˆ์˜ ๋ช…๋ น์–ด๋“ค์„ ์‹คํ–‰
4
์‰˜ ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ์ ˆ์ฐจ
 ์ผ๋ฐ˜์ ์œผ๋กœ ํŽธ์ง‘๊ธฐ์—์„œ ์ž‘์„ฑ(vi, gedit ๋“ฑ)
 ์ฃผ์„(โ€˜#โ€™ ๊ธฐํ˜ธ)๊ณผ ๋ช…๋ น์–ด๋กœ ๊ตฌ์„ฑ
 ์ฒซ ๋ฒˆ์งธ ํ–‰
 ๋ฐฐ์‹œ ์‰˜ ํ”„๋กœ๊ทธ๋žจ
 ์œ ๋‹‰์Šค ๋ช…๋ น์–ด, ๋ณธ ์‰˜ ๋ช…๋ น์–ด, ํ”„๋กœ๊ทธ๋žจ ๊ตฌ์กฐ, ์ฃผ์„ ๋“ฑ์œผ๋กœ ์ด๋ฃจ์–ด
์ง
#!/bin/bash
#!/bin/bash
#!/bin/bash
#!/bin/bash
:
:
:
: ํ•ญ์ƒ
ํ•ญ์ƒ
ํ•ญ์ƒ
ํ•ญ์ƒ ์Šคํฌ๋ฆฝํŠธ์˜
์Šคํฌ๋ฆฝํŠธ์˜
์Šคํฌ๋ฆฝํŠธ์˜
์Šคํฌ๋ฆฝํŠธ์˜ ์ฒซ
์ฒซ
์ฒซ
์ฒซ ํ–‰์—
ํ–‰์—
ํ–‰์—
ํ–‰์— ๋‚˜์™€์•ผ
๋‚˜์™€์•ผ
๋‚˜์™€์•ผ
๋‚˜์™€์•ผ ํ•จ
ํ•จ
ํ•จ
ํ•จ
:
:
:
: ์Šคํฌ๋ฆฝํŠธ๋ฅผ
์Šคํฌ๋ฆฝํŠธ๋ฅผ
์Šคํฌ๋ฆฝํŠธ๋ฅผ
์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ˆ˜ํ–‰ํ• 
์ˆ˜ํ–‰ํ• 
์ˆ˜ํ–‰ํ• 
์ˆ˜ํ–‰ํ•  ๋•Œ
๋•Œ
๋•Œ
๋•Œ ์‚ฌ์šฉํ• 
์‚ฌ์šฉํ• 
์‚ฌ์šฉํ• 
์‚ฌ์šฉํ•  ์‰˜์˜
์‰˜์˜
์‰˜์˜
์‰˜์˜ ์ด๋ฆ„์„
์ด๋ฆ„์„
์ด๋ฆ„์„
์ด๋ฆ„์„ ์ง€์ •
์ง€์ •
์ง€์ •
์ง€์ •
:
:
:
: ๊ธฐํ˜ธ
๊ธฐํ˜ธ
๊ธฐํ˜ธ
๊ธฐํ˜ธ โ€˜#!
#!
#!
#!โ€™ ๋Š”
๋Š”
๋Š”
๋Š” ๋งค์ง๋„˜๋ฒ„๋ผ
๋งค์ง๋„˜๋ฒ„๋ผ
๋งค์ง๋„˜๋ฒ„๋ผ
๋งค์ง๋„˜๋ฒ„๋ผ ๋ถˆ๋ฆผ
๋ถˆ๋ฆผ
๋ถˆ๋ฆผ
๋ถˆ๋ฆผ.
.
.
. ์ปค๋„์ด
์ปค๋„์ด
์ปค๋„์ด
์ปค๋„์ด ์‹คํ–‰
์‹คํ–‰
์‹คํ–‰
์‹คํ–‰ ํ”„๋กœ๊ทธ
ํ”„๋กœ๊ทธ
ํ”„๋กœ๊ทธ
ํ”„๋กœ๊ทธ
๋žจ์œผ๋กœ
๋žจ์œผ๋กœ
๋žจ์œผ๋กœ
๋žจ์œผ๋กœ ์ธ์‹ํ•ด์•ผ
์ธ์‹ํ•ด์•ผ
์ธ์‹ํ•ด์•ผ
์ธ์‹ํ•ด์•ผ ํ•˜๋Š”์ง€์˜
ํ•˜๋Š”์ง€์˜
ํ•˜๋Š”์ง€์˜
ํ•˜๋Š”์ง€์˜ ์—ฌ๋ถ€๋ฅผ
์—ฌ๋ถ€๋ฅผ
์—ฌ๋ถ€๋ฅผ
์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋ƒ„
๋‚˜ํƒ€๋ƒ„
๋‚˜ํƒ€๋ƒ„
๋‚˜ํƒ€๋ƒ„
5
์‰˜ ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰๊ถŒํ•œ ๋ถ€์—ฌ
 ํŒŒ์ผ ์ƒ์„ฑ ํ›„ ์ ์ ˆํ•œ ๊ถŒํ•œ์ด ์ฃผ์–ด์ ธ์•ผ ์‰˜ ์Šคํฌ๋ฆฝ
ํŠธ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•จ
6
์‰˜ ์Šคํฌ๋ฆฝํŠธ ์ˆ˜ํ–‰ ๊ฐ„๋‹จํ•œ์˜ˆ์ œ
 ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑํ•˜๊ธฐ (greetings)
7
์‰˜ ์Šคํฌ๋ฆฝํŠธ ์ˆ˜ํ–‰ ๊ฐ„๋‹จํ•œ์˜ˆ์ œ(Contโ€™d)
 ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ํ•˜๊ธฐ (greetings)
8
๋‚ด์žฅ๋ช…๋ น์–ด โ€˜readโ€™
 ํŒŒ์ผ์ด๋‚˜ ํ„ฐ๋ฏธ๋„๋กœ๋ถ€ํ„ฐ ์ž…๋ ฅ์„ ์ฝ์–ด์˜ค๊ธฐ ์œ„ํ•จ
 ๊ฐœํ–‰๋ฌธ์ž(n)๊ฐ€ ๋‚˜ํƒ€๋‚  ๋•Œ ๊นŒ์ง€ ํ–‰์„ ์ฝ์–ด๋“ค์ž„
 ์‚ฌ์šฉ์ž๊ฐ€ ์—”ํ„ฐํ‚ค๋ฅผ ์ž…๋ ฅํ•  ๋•Œ๊นŒ์ง€ ํ”„๋กœ๊ทธ๋žจ์„ ์ผ์‹œ ์ค‘์ง€
์‹œํ‚ค๋Š” ๋ชฉ์ ์œผ๋กœ๋„ ์‚ฌ์šฉํ•จ
์ž…๋ ฅ์—
์ž…๋ ฅ์—
์ž…๋ ฅ์—
์ž…๋ ฅ์— ์—ญ์Šฌ๋ž˜์‹œ๋ฅผ
์—ญ์Šฌ๋ž˜์‹œ๋ฅผ
์—ญ์Šฌ๋ž˜์‹œ๋ฅผ
์—ญ์Šฌ๋ž˜์‹œ๋ฅผ ์“ธ
์“ธ
์“ธ
์“ธ ์ˆ˜
์ˆ˜
์ˆ˜
์ˆ˜ ์žˆ๊ฒŒ
์žˆ๊ฒŒ
์žˆ๊ฒŒ
์žˆ๊ฒŒ ํ—ˆ์šฉํ•จ
ํ—ˆ์šฉํ•จ
ํ—ˆ์šฉํ•จ
ํ—ˆ์šฉํ•จ
read โ€“r line
Prompt๋ฅผ
๋ฅผ
๋ฅผ
๋ฅผ ์ถœ๋ ฅํ•˜๊ณ 
์ถœ๋ ฅํ•˜๊ณ 
์ถœ๋ ฅํ•˜๊ณ 
์ถœ๋ ฅํ•˜๊ณ  ์ž…๋ ฅ์„
์ž…๋ ฅ์„
์ž…๋ ฅ์„
์ž…๋ ฅ์„ ๊ธฐ๋‹ค๋ฆผ
๊ธฐ๋‹ค๋ฆผ
๊ธฐ๋‹ค๋ฆผ
๊ธฐ๋‹ค๋ฆผ. ์ž…๋ ฅ๋‚ด์šฉ์€
์ž…๋ ฅ๋‚ด์šฉ์€
์ž…๋ ฅ๋‚ด์šฉ์€
์ž…๋ ฅ๋‚ด์šฉ์€ REPLY๋ณ€์ˆ˜์—
๋ณ€์ˆ˜์—
๋ณ€์ˆ˜์—
๋ณ€์ˆ˜์— ์ €์žฅ
์ €์žฅ
์ €์žฅ
์ €์žฅ
read โ€“p prompt
์ž…๋ ฅ
์ž…๋ ฅ
์ž…๋ ฅ
์ž…๋ ฅ ํ–‰์—์„œ
ํ–‰์—์„œ
ํ–‰์—์„œ
ํ–‰์—์„œ ๋ช…๋ นํ–‰
๋ช…๋ นํ–‰
๋ช…๋ นํ–‰
๋ช…๋ นํ–‰ ํŽธ์ง‘์„
ํŽธ์ง‘์„
ํŽธ์ง‘์„
ํŽธ์ง‘์„ ์‚ฌ์šฉํ•จ
์‚ฌ์šฉํ•จ
์‚ฌ์šฉํ•จ
์‚ฌ์šฉํ•จ (๋ช…๋ นํ–‰
๋ช…๋ นํ–‰
๋ช…๋ นํ–‰
๋ช…๋ นํ–‰ ํŽธ์ง‘๊ธฐ๊ฐ€
ํŽธ์ง‘๊ธฐ๊ฐ€
ํŽธ์ง‘๊ธฐ๊ฐ€
ํŽธ์ง‘๊ธฐ๊ฐ€ vi๋ผ๋ฉด
๋ผ๋ฉด
๋ผ๋ฉด
๋ผ๋ฉด ์ž…๋ ฅํ–‰์—์„œ
์ž…๋ ฅํ–‰์—์„œ
์ž…๋ ฅํ–‰์—์„œ
์ž…๋ ฅํ–‰์—์„œ vi ํ‚ค๋ฅผ
ํ‚ค๋ฅผ
ํ‚ค๋ฅผ
ํ‚ค๋ฅผ
์ด์šฉํ•˜์—ฌ
์ด์šฉํ•˜์—ฌ
์ด์šฉํ•˜์—ฌ
์ด์šฉํ•˜์—ฌ ํŽธ์ง‘
ํŽธ์ง‘
ํŽธ์ง‘
ํŽธ์ง‘ ๊ฐ€๋Šฅ
๊ฐ€๋Šฅ
๊ฐ€๋Šฅ
๊ฐ€๋Šฅ)
read โ€“e
์ž…๋ ฅ๋ฐ›์€
์ž…๋ ฅ๋ฐ›์€
์ž…๋ ฅ๋ฐ›์€
์ž…๋ ฅ๋ฐ›์€ ๋‹จ์–ด
๋‹จ์–ด
๋‹จ์–ด
๋‹จ์–ด ๋ชฉ๋ก์„
๋ชฉ๋ก์„
๋ชฉ๋ก์„
๋ชฉ๋ก์„ arrayname์ด๋ผ๋Š”
์ด๋ผ๋Š”
์ด๋ผ๋Š”
์ด๋ผ๋Š” ๋ฐฐ์—ด์—
๋ฐฐ์—ด์—
๋ฐฐ์—ด์—
๋ฐฐ์—ด์— ์ €์žฅ
์ €์žฅ
์ €์žฅ
์ €์žฅ
read โ€“a arrayname
์ €์žฅํ• 
์ €์žฅํ• 
์ €์žฅํ• 
์ €์žฅํ•  ํŠน๋ณ„ํ•œ
ํŠน๋ณ„ํ•œ
ํŠน๋ณ„ํ•œ
ํŠน๋ณ„ํ•œ ์ด๋ฆ„์ด
์ด๋ฆ„์ด
์ด๋ฆ„์ด
์ด๋ฆ„์ด ์—†์œผ๋ฉด
์—†์œผ๋ฉด
์—†์œผ๋ฉด
์—†์œผ๋ฉด read๋Š”
๋Š”
๋Š”
๋Š” REPLY๋ผ๋Š”
๋ผ๋Š”
๋ผ๋Š”
๋ผ๋Š” ํŠน์ˆ˜
ํŠน์ˆ˜
ํŠน์ˆ˜
ํŠน์ˆ˜ ๋‚ด์žฅ๋ณ€์ˆ˜์—
๋‚ด์žฅ๋ณ€์ˆ˜์—
๋‚ด์žฅ๋ณ€์ˆ˜์—
๋‚ด์žฅ๋ณ€์ˆ˜์— ๊ฐ’์„
๊ฐ’์„
๊ฐ’์„
๊ฐ’์„ ์ €์žฅํ•จ
์ €์žฅํ•จ
์ €์žฅํ•จ
์ €์žฅํ•จ
read
ํ‘œ์ค€์ž…๋ ฅ์œผ๋กœ๋ถ€ํ„ฐ
ํ‘œ์ค€์ž…๋ ฅ์œผ๋กœ๋ถ€ํ„ฐ
ํ‘œ์ค€์ž…๋ ฅ์œผ๋กœ๋ถ€ํ„ฐ
ํ‘œ์ค€์ž…๋ ฅ์œผ๋กœ๋ถ€ํ„ฐ ํ•œ
ํ•œ
ํ•œ
ํ•œ ํ–‰์„
ํ–‰์„
ํ–‰์„
ํ–‰์„ ์ฝ์–ด์„œ
์ฝ์–ด์„œ
์ฝ์–ด์„œ
์ฝ์–ด์„œ ๊ทธ์ค‘
๊ทธ์ค‘
๊ทธ์ค‘
๊ทธ์ค‘ ์ฒซ
์ฒซ
์ฒซ
์ฒซ ๋‹จ์–ด๋Š”
๋‹จ์–ด๋Š”
๋‹จ์–ด๋Š”
๋‹จ์–ด๋Š” ๋ณ€์ˆ˜
๋ณ€์ˆ˜
๋ณ€์ˆ˜
๋ณ€์ˆ˜ first์—
์—
์—
์— ์ €์žฅํ•˜๊ณ 
์ €์žฅํ•˜๊ณ 
์ €์žฅํ•˜๊ณ 
์ €์žฅํ•˜๊ณ  ๋‚˜๋จธ์ง€๋Š”
๋‚˜๋จธ์ง€๋Š”
๋‚˜๋จธ์ง€๋Š”
๋‚˜๋จธ์ง€๋Š”
last์—
์—
์—
์— ์ €์žฅํ•จ
์ €์žฅํ•จ
์ €์žฅํ•จ
์ €์žฅํ•จ
read first last
ํ‘œ์ค€์ž…๋ ฅ์œผ๋กœ๋ถ€ํ„ฐ
ํ‘œ์ค€์ž…๋ ฅ์œผ๋กœ๋ถ€ํ„ฐ
ํ‘œ์ค€์ž…๋ ฅ์œผ๋กœ๋ถ€ํ„ฐ
ํ‘œ์ค€์ž…๋ ฅ์œผ๋กœ๋ถ€ํ„ฐ ํ•œ
ํ•œ
ํ•œ
ํ•œ ํ–‰์„
ํ–‰์„
ํ–‰์„
ํ–‰์„ ์ฝ์–ด์„œ
์ฝ์–ด์„œ
์ฝ์–ด์„œ
์ฝ์–ด์„œ ๋ณ€์ˆ˜
๋ณ€์ˆ˜
๋ณ€์ˆ˜
๋ณ€์ˆ˜ answer์—
์—
์—
์— ์ €์žฅํ•จ
์ €์žฅํ•จ
์ €์žฅํ•จ
์ €์žฅํ•จ
read answer
์˜๋ฏธ
์˜๋ฏธ
์˜๋ฏธ
์˜๋ฏธ
ํ˜•์‹
ํ˜•์‹
ํ˜•์‹
ํ˜•์‹
9
๋‚ด์žฅ๋ช…๋ น์–ด โ€˜readโ€™ ์˜ˆ์ œ
 ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑํ•˜๊ธฐ (nosy)
10
๋‚ด์žฅ๋ช…๋ น์–ด โ€˜readโ€™ ์˜ˆ์ œ(Contโ€™d)
 ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ํ•˜๊ธฐ (nosy)
11
์‚ฐ์ˆ ์—ฐ์‚ฐ(์ •์ˆ˜ํƒ€์ž…๊ณ„์‚ฐ)
 โ€˜declareโ€™ ๋ช…๋ น์–ด (declare โ€“i ์‚ฌ์šฉ)
# declare
# declare
# declare
# declare โ€“i
i
i
i ๋ช…๋ น์–ด๋ฅผ
๋ช…๋ น์–ด๋ฅผ
๋ช…๋ น์–ด๋ฅผ
๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ
์‚ฌ์šฉํ•˜์—ฌ
์‚ฌ์šฉํ•˜์—ฌ
์‚ฌ์šฉํ•˜์—ฌ num
num
num
num ๋ณ€์ˆ˜๋ฅผ
๋ณ€์ˆ˜๋ฅผ
๋ณ€์ˆ˜๋ฅผ
๋ณ€์ˆ˜๋ฅผ
์ •์ˆ˜
์ •์ˆ˜
์ •์ˆ˜
์ •์ˆ˜ ํƒ€์ž…์œผ๋กœ
ํƒ€์ž…์œผ๋กœ
ํƒ€์ž…์œผ๋กœ
ํƒ€์ž…์œผ๋กœ ์„ ์–ธ
์„ ์–ธ
์„ ์–ธ
์„ ์–ธ
#
#
#
# ๋ฌธ์ž์—ด
๋ฌธ์ž์—ด
๋ฌธ์ž์—ด
๋ฌธ์ž์—ด hello
hello
hello
hello๋ฅผ
๋ฅผ
๋ฅผ
๋ฅผ ์ •์ˆ˜ํƒ€์ž…
์ •์ˆ˜ํƒ€์ž…
์ •์ˆ˜ํƒ€์ž…
์ •์ˆ˜ํƒ€์ž… ๋ณ€์ˆ˜
๋ณ€์ˆ˜
๋ณ€์ˆ˜
๋ณ€์ˆ˜ num
num
num
num์—
์—
์—
์— ๋Œ€์ž…ํ•˜๋ ค๊ณ 
๋Œ€์ž…ํ•˜๋ ค๊ณ 
๋Œ€์ž…ํ•˜๋ ค๊ณ 
๋Œ€์ž…ํ•˜๋ ค๊ณ  ํ•˜๋ฉด
ํ•˜๋ฉด
ํ•˜๋ฉด
ํ•˜๋ฉด ๋Œ€์‹ 
๋Œ€์‹ 
๋Œ€์‹ 
๋Œ€์‹  0
0
0
0์˜
์˜
์˜
์˜ ๊ฐ’์ด
๊ฐ’์ด
๊ฐ’์ด
๊ฐ’์ด num
num
num
num ๋ณ€์ˆ˜์—
๋ณ€์ˆ˜์—
๋ณ€์ˆ˜์—
๋ณ€์ˆ˜์— ์ง€์ •๋จ
์ง€์ •๋จ
์ง€์ •๋จ
์ง€์ •๋จ
#
#
#
# ์ŠคํŽ˜์ด์Šค๋Š”
์ŠคํŽ˜์ด์Šค๋Š”
์ŠคํŽ˜์ด์Šค๋Š”
์ŠคํŽ˜์ด์Šค๋Š” ์‚ฌ์šฉํ•˜์ง€
์‚ฌ์šฉํ•˜์ง€
์‚ฌ์šฉํ•˜์ง€
์‚ฌ์šฉํ•˜์ง€ ์•Š๊ฑฐ๋‚˜
์•Š๊ฑฐ๋‚˜
์•Š๊ฑฐ๋‚˜
์•Š๊ฑฐ๋‚˜ ๋”ฐ์˜ดํ‘œ๋กœ
๋”ฐ์˜ดํ‘œ๋กœ
๋”ฐ์˜ดํ‘œ๋กœ
๋”ฐ์˜ดํ‘œ๋กœ ๋ฌถ์–ด์•ผ
๋ฌถ์–ด์•ผ
๋ฌถ์–ด์•ผ
๋ฌถ์–ด์•ผ ํ•จ
ํ•จ
ํ•จ
ํ•จ
#
#
#
# ์ŠคํŽ˜์ด์Šค๋ฅผ
์ŠคํŽ˜์ด์Šค๋ฅผ
์ŠคํŽ˜์ด์Šค๋ฅผ
์ŠคํŽ˜์ด์Šค๋ฅผ ๋”ฐ์˜ดํ‘œ๋กœ
๋”ฐ์˜ดํ‘œ๋กœ
๋”ฐ์˜ดํ‘œ๋กœ
๋”ฐ์˜ดํ‘œ๋กœ ๋ฌถ์—ˆ์œผ๋ฏ€๋กœ
๋ฌถ์—ˆ์œผ๋ฏ€๋กœ
๋ฌถ์—ˆ์œผ๋ฏ€๋กœ
๋ฌถ์—ˆ์œผ๋ฏ€๋กœ ๊ณฑ์…ˆ์ด
๊ณฑ์…ˆ์ด
๊ณฑ์…ˆ์ด
๊ณฑ์…ˆ์ด ์ˆ˜ํ–‰๋จ
์ˆ˜ํ–‰๋จ
์ˆ˜ํ–‰๋จ
์ˆ˜ํ–‰๋จ
#
#
#
# ๋ณ€์ˆ˜๊ฐ€
๋ณ€์ˆ˜๊ฐ€
๋ณ€์ˆ˜๊ฐ€
๋ณ€์ˆ˜๊ฐ€ ์ •์ˆ˜ํƒ€์ž…์ด๋ฏ€๋กœ
์ •์ˆ˜ํƒ€์ž…์ด๋ฏ€๋กœ
์ •์ˆ˜ํƒ€์ž…์ด๋ฏ€๋กœ
์ •์ˆ˜ํƒ€์ž…์ด๋ฏ€๋กœ ๋ถ€๋™์†Œ์ˆ˜์ ์„
๋ถ€๋™์†Œ์ˆ˜์ ์„
๋ถ€๋™์†Œ์ˆ˜์ ์„
๋ถ€๋™์†Œ์ˆ˜์ ์„ ์ง€์ •ํ•˜๋ฉด
์ง€์ •ํ•˜๋ฉด
์ง€์ •ํ•˜๋ฉด
์ง€์ •ํ•˜๋ฉด ๊ตฌ๋ฌธ์—๋Ÿฌ๋ฐœ์ƒ
๊ตฌ๋ฌธ์—๋Ÿฌ๋ฐœ์ƒ
๊ตฌ๋ฌธ์—๋Ÿฌ๋ฐœ์ƒ
๊ตฌ๋ฌธ์—๋Ÿฌ๋ฐœ์ƒ
12
์‚ฐ์ˆ ์—ฐ์‚ฐ(์ •์ˆ˜ํƒ€์ž…๊ณ„์‚ฐ)
 โ€˜letโ€™ ๋ช…๋ น์–ด
# i
# i
# i
# i ๋ณ€์ˆ˜์—
๋ณ€์ˆ˜์—
๋ณ€์ˆ˜์—
๋ณ€์ˆ˜์— 5
5
5
5๋ฅผ
๋ฅผ
๋ฅผ
๋ฅผ ์ €์žฅ
์ €์žฅ
์ €์žฅ
์ €์žฅ
# let
# let
# let
# let๋ช…๋ น์–ด๊ฐ€
๋ช…๋ น์–ด๊ฐ€
๋ช…๋ น์–ด๊ฐ€
๋ช…๋ น์–ด๊ฐ€ i
i
i
i ๋ณ€์ˆ˜์—
๋ณ€์ˆ˜์—
๋ณ€์ˆ˜์—
๋ณ€์ˆ˜์— 1
1
1
1์„
์„
์„
์„ ๋”ํ•จ
๋”ํ•จ
๋”ํ•จ
๋”ํ•จ.
.
.
. ์‚ฐ์ˆ ์—ฐ์‚ฐ์—์„œ๋Š”
์‚ฐ์ˆ ์—ฐ์‚ฐ์—์„œ๋Š”
์‚ฐ์ˆ ์—ฐ์‚ฐ์—์„œ๋Š”
์‚ฐ์ˆ ์—ฐ์‚ฐ์—์„œ๋Š” ๋ณ€์ˆ˜
๋ณ€์ˆ˜
๋ณ€์ˆ˜
๋ณ€์ˆ˜
์น˜ํ™˜์„
์น˜ํ™˜์„
์น˜ํ™˜์„
์น˜ํ™˜์„ ์œ„ํ•ด
์œ„ํ•ด
์œ„ํ•ด
์œ„ํ•ด โ€˜$
$
$
$โ€™๋ฅผ
๋ฅผ
๋ฅผ
๋ฅผ ์‚ฌ์šฉํ• 
์‚ฌ์šฉํ• 
์‚ฌ์šฉํ• 
์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€
ํ•„์š”๊ฐ€
ํ•„์š”๊ฐ€
ํ•„์š”๊ฐ€ ์—†์Œ
์—†์Œ
์—†์Œ
์—†์Œ
#
#
#
# ์ธ์ž๋“ค์—
์ธ์ž๋“ค์—
์ธ์ž๋“ค์—
์ธ์ž๋“ค์— ์ŠคํŽ˜์ด์Šค๊ฐ€
์ŠคํŽ˜์ด์Šค๊ฐ€
์ŠคํŽ˜์ด์Šค๊ฐ€
์ŠคํŽ˜์ด์Šค๊ฐ€ ์žˆ์œผ๋ฉด
์žˆ์œผ๋ฉด
์žˆ์œผ๋ฉด
์žˆ์œผ๋ฉด ๋”ฐ์˜ดํ‘œ๋ฅผ
๋”ฐ์˜ดํ‘œ๋ฅผ
๋”ฐ์˜ดํ‘œ๋ฅผ
๋”ฐ์˜ดํ‘œ๋ฅผ ์‚ฌ์šฉ
์‚ฌ์šฉ
์‚ฌ์šฉ
์‚ฌ์šฉ
#
#
#
# ๋ณตํ•ฉ์—ฐ์‚ฐ์ž
๋ณตํ•ฉ์—ฐ์‚ฐ์ž
๋ณตํ•ฉ์—ฐ์‚ฐ์ž
๋ณตํ•ฉ์—ฐ์‚ฐ์ž +=
+=
+=
+=๋ฅผ
๋ฅผ
๋ฅผ
๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ
์‚ฌ์šฉํ•˜์—ฌ
์‚ฌ์šฉํ•˜์—ฌ
์‚ฌ์šฉํ•˜์—ฌ i
i
i
i ๋ณ€์ˆ˜์—
๋ณ€์ˆ˜์—
๋ณ€์ˆ˜์—
๋ณ€์ˆ˜์— 1
1
1
1์„
์„
์„
์„ ๋”ํ•จ
๋”ํ•จ
๋”ํ•จ
๋”ํ•จ
# let
# let
# let
# let๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด ๋Œ€์‹ 
๋Œ€์‹ 
๋Œ€์‹ 
๋Œ€์‹  (( ))
(( ))
(( ))
(( )) ๋ช…๋ น์–ด๋ฅผ
๋ช…๋ น์–ด๋ฅผ
๋ช…๋ น์–ด๋ฅผ
๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ• ์ˆ˜
์‚ฌ์šฉํ• ์ˆ˜
์‚ฌ์šฉํ• ์ˆ˜
์‚ฌ์šฉํ• ์ˆ˜ ์žˆ์Œ
์žˆ์Œ
์žˆ์Œ
์žˆ์Œ
13
์‚ฐ์ˆ ์—ฐ์‚ฐ(๋ถ€๋™์†Œ์ˆ˜์ ํƒ€์ž…๊ณ„์‚ฐ)
 ๋ฐฐ์‹œ ์‰˜์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ •์ˆ˜ํƒ€์ž…๋งŒ ๊ณ„์‚ฐ
 bc, awk ๋“ฑ์˜ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณต์žกํ•œ ๊ณ„์‚ฐ
์ˆ˜ํ–‰
14
์œ„์น˜ ์ธ์ž
 ์Šคํฌ๋ฆฝํŠธ ์ด๋ฆ„ ๋‹ค์Œ์— ๊ณต๋ฐฑ ๋ฌธ์ž๋กœ ๊ตฌ๋ถ„๋œ ๊ฐ ๋‹จ์–ด๋ฅผ ์ธ์ž
๋ผ ๋ถ€๋ฆ„
 ๋ช…๋ นํ–‰์—์„œ ์Šคํฌ๋ฆฝํŠธ์— ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ๋„˜๊ฒจ์ค„ ์ˆ˜ ์žˆ์Œ
 ๋ช…๋ น์–ด โ€˜setโ€™์„ ์จ์„œ ์„ค์ • ๋˜๋Š” ์žฌ์„ค์ •ํ•  ์ˆ˜ ์žˆ๊ณ  ์ด๋•Œ ์ด
์ „ ์„ค์ • ๊ฐ’์€ ์ง€์›Œ์ง
โ€œ$1โ€ โ€œ$2โ€ โ€œ$3โ€์œผ๋กœ
์œผ๋กœ
์œผ๋กœ
์œผ๋กœ ํ‰๊ฐ€
ํ‰๊ฐ€
ํ‰๊ฐ€
ํ‰๊ฐ€
โ€œ$@โ€
โ€œ$1 $2 $3โ€์œผ๋กœ
์œผ๋กœ
์œผ๋กœ
์œผ๋กœ ํ‰๊ฐ€
ํ‰๊ฐ€
ํ‰๊ฐ€
ํ‰๊ฐ€
โ€œ$*โ€
ํฐ๋”ฐ์˜ดํ‘œ๋ฅผ
ํฐ๋”ฐ์˜ดํ‘œ๋ฅผ
ํฐ๋”ฐ์˜ดํ‘œ๋ฅผ
ํฐ๋”ฐ์˜ดํ‘œ๋ฅผ ์‚ฌ์šฉํ•˜์˜€์„
์‚ฌ์šฉํ•˜์˜€์„
์‚ฌ์šฉํ•˜์˜€์„
์‚ฌ์šฉํ•˜์˜€์„ ๋•Œ๋ฅผ
๋•Œ๋ฅผ
๋•Œ๋ฅผ
๋•Œ๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š”
์ œ์™ธํ•˜๊ณ ๋Š”
์ œ์™ธํ•˜๊ณ ๋Š”
์ œ์™ธํ•˜๊ณ ๋Š” $*์™€
์™€
์™€
์™€ ๋™์ผํ•œ
๋™์ผํ•œ
๋™์ผํ•œ
๋™์ผํ•œ ์˜๋ฏธ
์˜๋ฏธ
์˜๋ฏธ
์˜๋ฏธ
$@
๋ชจ๋“ 
๋ชจ๋“ 
๋ชจ๋“ 
๋ชจ๋“  ์œ„์น˜
์œ„์น˜
์œ„์น˜
์œ„์น˜ ์ธ์ž๋ฅผ
์ธ์ž๋ฅผ
์ธ์ž๋ฅผ
์ธ์ž๋ฅผ ํ‰๊ฐ€
ํ‰๊ฐ€
ํ‰๊ฐ€
ํ‰๊ฐ€
$*
์œ„์น˜
์œ„์น˜
์œ„์น˜
์œ„์น˜ ์ธ์ž์˜
์ธ์ž์˜
์ธ์ž์˜
์ธ์ž์˜ ์ด
์ด
์ด
์ด ๊ฐœ์ˆ˜๋ฅผ
๊ฐœ์ˆ˜๋ฅผ
๊ฐœ์ˆ˜๋ฅผ
๊ฐœ์ˆ˜๋ฅผ ํ‰๊ฐ€
ํ‰๊ฐ€
ํ‰๊ฐ€
ํ‰๊ฐ€
$#
10๋ฒˆ
๋ฒˆ
๋ฒˆ
๋ฒˆ ์œ„์น˜
์œ„์น˜
์œ„์น˜
์œ„์น˜ ์ธ์ž
์ธ์ž
์ธ์ž
์ธ์ž
${10}
1๋ฒˆ๋ถ€ํ„ฐ
๋ฒˆ๋ถ€ํ„ฐ
๋ฒˆ๋ถ€ํ„ฐ
๋ฒˆ๋ถ€ํ„ฐ 9๋ฒˆ๊นŒ์ง€์˜
๋ฒˆ๊นŒ์ง€์˜
๋ฒˆ๊นŒ์ง€์˜
๋ฒˆ๊นŒ์ง€์˜ ์œ„์น˜
์œ„์น˜
์œ„์น˜
์œ„์น˜ ์ธ์ž
์ธ์ž
์ธ์ž
์ธ์ž
$1-$9
ํ˜„์žฌ
ํ˜„์žฌ
ํ˜„์žฌ
ํ˜„์žฌ ์‰˜
์‰˜
์‰˜
์‰˜ ์Šคํฌ๋ฆฝํŠธ
์Šคํฌ๋ฆฝํŠธ
์Šคํฌ๋ฆฝํŠธ
์Šคํฌ๋ฆฝํŠธ ์ด๋ฆ„
์ด๋ฆ„
์ด๋ฆ„
์ด๋ฆ„
$0
์˜๋ฏธ
์˜๋ฏธ
์˜๋ฏธ
์˜๋ฏธ
์œ„์น˜์ธ์ž
์œ„์น˜์ธ์ž
์œ„์น˜์ธ์ž
์œ„์น˜์ธ์ž
15
์œ„์น˜ ์ธ์ž ์˜ˆ์ œ
 ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑํ•˜๊ธฐ (greetings2)
16
์œ„์น˜ ์ธ์ž ์˜ˆ์ œ(contโ€™d)
 ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ํ•˜๊ธฐ (greetings2)
17
โ€˜setโ€™ ๋ช…๋ น์–ด์™€ ์œ„์น˜ ์ธ์ž ์˜ˆ์ œ
 ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑํ•˜๊ธฐ (args)
18
โ€˜setโ€™ ๋ช…๋ น์–ด์™€ ์œ„์น˜ ์ธ์ž ์˜ˆ์ œ(Contโ€™d)
 ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ํ•˜๊ธฐ (args)
19
๋‚ด์žฅ๋ช…๋ น์–ด โ€˜testโ€™
 ํ‘œํ˜„์‹์˜ ํ‰๊ฐ€์— ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ
#
#
#
# grep
grep
grep
grep๋ช…๋ น์–ด์˜
๋ช…๋ น์–ด์˜
๋ช…๋ น์–ด์˜
๋ช…๋ น์–ด์˜ ์ข…๋ฃŒ์ƒํƒœ๊ฐ€
์ข…๋ฃŒ์ƒํƒœ๊ฐ€
์ข…๋ฃŒ์ƒํƒœ๊ฐ€
์ข…๋ฃŒ์ƒํƒœ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ
์„ฑ๊ณต์ ์œผ๋กœ
์„ฑ๊ณต์ ์œผ๋กœ
์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰ํ–ˆ์œผ๋ฏ€๋กœ
์ˆ˜ํ–‰ํ–ˆ์œผ๋ฏ€๋กœ
์ˆ˜ํ–‰ํ–ˆ์œผ๋ฏ€๋กœ
์ˆ˜ํ–‰ํ–ˆ์œผ๋ฏ€๋กœ 0
0
0
0์ด
์ด
์ด
์ด ๋œ๋‹ค
๋œ๋‹ค
๋œ๋‹ค
๋œ๋‹ค
# test
# test
# test
# test๋ช…๋ น์–ด๋Š”
๋ช…๋ น์–ด๋Š”
๋ช…๋ น์–ด๋Š”
๋ช…๋ น์–ด๋Š” ๋ฌธ์ž์—ด์ด๋‚˜
๋ฌธ์ž์—ด์ด๋‚˜
๋ฌธ์ž์—ด์ด๋‚˜
๋ฌธ์ž์—ด์ด๋‚˜ ์ˆซ์ž๋ฅผ
์ˆซ์ž๋ฅผ
์ˆซ์ž๋ฅผ
์ˆซ์ž๋ฅผ ํ‰๊ฐ€ํ•˜๊ฑฐ๋‚˜
ํ‰๊ฐ€ํ•˜๊ฑฐ๋‚˜
ํ‰๊ฐ€ํ•˜๊ฑฐ๋‚˜
ํ‰๊ฐ€ํ•˜๊ฑฐ๋‚˜,
,
,
,
ํŒŒ์ผ์„
ํŒŒ์ผ์„
ํŒŒ์ผ์„
ํŒŒ์ผ์„ ๊ฒ€์‚ฌํ•˜๊ธฐ
๊ฒ€์‚ฌํ•˜๊ธฐ
๊ฒ€์‚ฌํ•˜๊ธฐ
๊ฒ€์‚ฌํ•˜๊ธฐ ์œ„ํ•ด
์œ„ํ•ด
์œ„ํ•ด
์œ„ํ•ด ์‚ฌ์šฉ
์‚ฌ์šฉ
์‚ฌ์šฉ
์‚ฌ์šฉ. 0
. 0
. 0
. 0์„
์„
์„
์„ ๋ฐ˜ํ™˜ํ•˜๋ฉด
๋ฐ˜ํ™˜ํ•˜๋ฉด
๋ฐ˜ํ™˜ํ•˜๋ฉด
๋ฐ˜ํ™˜ํ•˜๋ฉด ํ‘œํ˜„์‹์„
ํ‘œํ˜„์‹์„
ํ‘œํ˜„์‹์„
ํ‘œํ˜„์‹์„
์ฐธ์œผ๋กœ
์ฐธ์œผ๋กœ
์ฐธ์œผ๋กœ
์ฐธ์œผ๋กœ ํ‰๊ฐ€
ํ‰๊ฐ€
ํ‰๊ฐ€
ํ‰๊ฐ€, 1
, 1
, 1
, 1์ด๋ฉด
์ด๋ฉด
์ด๋ฉด
์ด๋ฉด ๊ฑฐ์ง“์ž„
๊ฑฐ์ง“์ž„
๊ฑฐ์ง“์ž„
๊ฑฐ์ง“์ž„.
.
.
. ๋“ฑํ˜ธ
๋“ฑํ˜ธ
๋“ฑํ˜ธ
๋“ฑํ˜ธ(=)
(=)
(=)
(=)๊ธฐํ˜ธ
๊ธฐํ˜ธ
๊ธฐํ˜ธ
๊ธฐํ˜ธ ์ขŒ์šฐ์—๋Š”
์ขŒ์šฐ์—๋Š”
์ขŒ์šฐ์—๋Š”
์ขŒ์šฐ์—๋Š”
์ŠคํŽ˜์ด์Šค
์ŠคํŽ˜์ด์Šค
์ŠคํŽ˜์ด์Šค
์ŠคํŽ˜์ด์Šค ์‚ฝ์ž…
์‚ฝ์ž…
์‚ฝ์ž…
์‚ฝ์ž….
.
.
.
#
#
#
# ๋Œ€๊ด„ํ˜ธ๋ฅผ
๋Œ€๊ด„ํ˜ธ๋ฅผ
๋Œ€๊ด„ํ˜ธ๋ฅผ
๋Œ€๊ด„ํ˜ธ๋ฅผ test
test
test
test๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด ๋Œ€์‹ 
๋Œ€์‹ 
๋Œ€์‹ 
๋Œ€์‹  ์‚ฌ์šฉํ• 
์‚ฌ์šฉํ• 
์‚ฌ์šฉํ• 
์‚ฌ์šฉํ•  ์ˆ˜
์ˆ˜
์ˆ˜
์ˆ˜ ์žˆ์Œ
์žˆ์Œ
์žˆ์Œ
์žˆ์Œ
# test
# test
# test
# test๋ช…๋ น์–ด์—์„œ๋Š”
๋ช…๋ น์–ด์—์„œ๋Š”
๋ช…๋ น์–ด์—์„œ๋Š”
๋ช…๋ น์–ด์—์„œ๋Š” ์™€์ผ๋“œ์นด๋“œ๋ฅผ
์™€์ผ๋“œ์นด๋“œ๋ฅผ
์™€์ผ๋“œ์นด๋“œ๋ฅผ
์™€์ผ๋“œ์นด๋“œ๋ฅผ ์‚ฌ์šฉํ• 
์‚ฌ์šฉํ• 
์‚ฌ์šฉํ• 
์‚ฌ์šฉํ•  ์ˆ˜
์ˆ˜
์ˆ˜
์ˆ˜ ์—†์Œ
์—†์Œ
์—†์Œ
์—†์Œ
# $x
# $x
# $x
# $x๊ฐ€
๊ฐ€
๊ฐ€
๊ฐ€ $y
$y
$y
$y๋ณด๋‹ค
๋ณด๋‹ค
๋ณด๋‹ค
๋ณด๋‹ค ํฐ์ง€
ํฐ์ง€
ํฐ์ง€
ํฐ์ง€(
(
(
(-
-
-
-gt
gt
gt
gt)
)
)
) ๊ฒ€์‚ฌํ•จ
๊ฒ€์‚ฌํ•จ
๊ฒ€์‚ฌํ•จ
๊ฒ€์‚ฌํ•จ. 0
. 0
. 0
. 0์ด๋ฉด
์ด๋ฉด
์ด๋ฉด
์ด๋ฉด ์ฐธ
์ฐธ
์ฐธ
์ฐธ, 1
, 1
, 1
, 1์ด๋ฉด
์ด๋ฉด
์ด๋ฉด
์ด๋ฉด ๊ฑฐ์ง“
๊ฑฐ์ง“
๊ฑฐ์ง“
๊ฑฐ์ง“
# $x
# $x
# $x
# $x๊ฐ€
๊ฐ€
๊ฐ€
๊ฐ€ $y
$y
$y
$y๋ณด๋‹ค
๋ณด๋‹ค
๋ณด๋‹ค
๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜
์ž‘๊ฑฐ๋‚˜
์ž‘๊ฑฐ๋‚˜
์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€์ง€
๊ฐ™์€์ง€
๊ฐ™์€์ง€
๊ฐ™์€์ง€(
(
(
(-
-
-
-le)
le)
le)
le) ๊ฒ€์‚ฌํ•จ
๊ฒ€์‚ฌํ•จ
๊ฒ€์‚ฌํ•จ
๊ฒ€์‚ฌํ•จ. 0
. 0
. 0
. 0์ด๋ฉด
์ด๋ฉด
์ด๋ฉด
์ด๋ฉด ์ฐธ
์ฐธ
์ฐธ
์ฐธ, 1
, 1
, 1
, 1์ด๋ฉด
์ด๋ฉด
์ด๋ฉด
์ด๋ฉด ๊ฑฐ์ง“
๊ฑฐ์ง“
๊ฑฐ์ง“
๊ฑฐ์ง“
20
โ€˜ifโ€™ ๋ช…๋ น์–ด
 ์กฐ๊ฑด์„ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ํ˜•ํƒœ
ํ˜•์‹
ํ˜•์‹
ํ˜•์‹
ํ˜•์‹
if
if
if
if ๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด
then
then
then
then
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด
fi
fi
fi
fi
(
(
(
(์ˆซ์ž
์ˆซ์ž
์ˆซ์ž
์ˆซ์ž ๋ฐ
๋ฐ
๋ฐ
๋ฐ ๋ฌธ์ž์—ด์—
๋ฌธ์ž์—ด์—
๋ฌธ์ž์—ด์—
๋ฌธ์ž์—ด์— ๋Œ€ํ•ด
๋Œ€ํ•ด
๋Œ€ํ•ด
๋Œ€ํ•ด test
test
test
test ์‚ฌ์šฉ
์‚ฌ์šฉ
์‚ฌ์šฉ
์‚ฌ์šฉ โ€“ old)
old)
old)
old)
if
if
if
if test
test
test
test ์กฐ๊ฑด์‹
์กฐ๊ฑด์‹
์กฐ๊ฑด์‹
์กฐ๊ฑด์‹
then
then
then
then
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด
fi
fi
fi
fi
(
(
(
(๋˜๋Š”
๋˜๋Š”
๋˜๋Š”
๋˜๋Š”)
)
)
)
if [
if [
if [
if [ ๋ฌธ์ž์—ด
๋ฌธ์ž์—ด
๋ฌธ์ž์—ด
๋ฌธ์ž์—ด/
/
/
/์ˆ˜์‹
์ˆ˜์‹
์ˆ˜์‹
์ˆ˜์‹ ] then
] then
] then
] then
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด
fi
fi
fi
fi
ํ˜•์‹
ํ˜•์‹
ํ˜•์‹
ํ˜•์‹
(
(
(
(๋ฌธ์ž์—ด์—
๋ฌธ์ž์—ด์—
๋ฌธ์ž์—ด์—
๋ฌธ์ž์—ด์— ๋Œ€ํ•ด
๋Œ€ํ•ด
๋Œ€ํ•ด
๋Œ€ํ•ด test
test
test
test ์‚ฌ์šฉ
์‚ฌ์šฉ
์‚ฌ์šฉ
์‚ฌ์šฉ โ€“ new
new
new
new ํ˜•์‹
ํ˜•์‹
ํ˜•์‹
ํ˜•์‹)
)
)
)
if [[
if [[
if [[
if [[ ๋ฌธ์ž์—ด
๋ฌธ์ž์—ด
๋ฌธ์ž์—ด
๋ฌธ์ž์—ด ์กฐ๊ฑด์‹
์กฐ๊ฑด์‹
์กฐ๊ฑด์‹
์กฐ๊ฑด์‹ ]] then
]] then
]] then
]] then
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด
fi
fi
fi
fi
(
(
(
(์ˆซ์ž์—
์ˆซ์ž์—
์ˆซ์ž์—
์ˆซ์ž์— ๋Œ€ํ•ด
๋Œ€ํ•ด
๋Œ€ํ•ด
๋Œ€ํ•ด let
let
let
let ์‚ฌ์šฉ
์‚ฌ์šฉ
์‚ฌ์šฉ
์‚ฌ์šฉ โ€“ new
new
new
new ํ˜•์‹
ํ˜•์‹
ํ˜•์‹
ํ˜•์‹)
)
)
)
if ((
if ((
if ((
if (( ์ˆ˜์‹
์ˆ˜์‹
์ˆ˜์‹
์ˆ˜์‹ ))
))
))
))
21
โ€˜ifโ€™ ๋ช…๋ น์–ด ์˜ˆ์ œ
#
#
#
# โ€˜grep
grep
grep
grepโ€™ ๋ช…๋ น์–ด๊ฐ€
๋ช…๋ น์–ด๊ฐ€
๋ช…๋ น์–ด๊ฐ€
๋ช…๋ น์–ด๊ฐ€ /etc/
/etc/
/etc/
/etc/passwd
passwd
passwd
passwd ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ณ€์ˆ˜
๋ณ€์ˆ˜
๋ณ€์ˆ˜
๋ณ€์ˆ˜
name
name
name
name์„
์„
์„
์„ ์ฐพ๋Š”๋‹ค
์ฐพ๋Š”๋‹ค
์ฐพ๋Š”๋‹ค
์ฐพ๋Š”๋‹ค.
.
.
. ํ‘œ์ค€
ํ‘œ์ค€
ํ‘œ์ค€
ํ‘œ์ค€ ์ถœ๋ ฅ๊ณผ
์ถœ๋ ฅ๊ณผ
์ถœ๋ ฅ๊ณผ
์ถœ๋ ฅ๊ณผ ํ‘œ์ค€
ํ‘œ์ค€
ํ‘œ์ค€
ํ‘œ์ค€ ์—๋Ÿฌ๋Š”
์—๋Ÿฌ๋Š”
์—๋Ÿฌ๋Š”
์—๋Ÿฌ๋Š” /dev/null
/dev/null
/dev/null
/dev/null๋กœ
๋กœ
๋กœ
๋กœ
๋ฆฌ๋‹ค์ด๋ ‰์…˜
๋ฆฌ๋‹ค์ด๋ ‰์…˜
๋ฆฌ๋‹ค์ด๋ ‰์…˜
๋ฆฌ๋‹ค์ด๋ ‰์…˜ ๋จ
๋จ
๋จ
๋จ
#
#
#
# โ€˜grep
grep
grep
grepโ€™ ๋ช…๋ น์–ด์˜
๋ช…๋ น์–ด์˜
๋ช…๋ น์–ด์˜
๋ช…๋ น์–ด์˜ ์ข…๋ฃŒ
์ข…๋ฃŒ
์ข…๋ฃŒ
์ข…๋ฃŒ ์ƒํƒœ๊ฐ€
์ƒํƒœ๊ฐ€
์ƒํƒœ๊ฐ€
์ƒํƒœ๊ฐ€ 0
0
0
0์ด๋ฉด
์ด๋ฉด
์ด๋ฉด
์ด๋ฉด, then
, then
, then
, then ์—์„œ๋ถ€ํ„ฐ
์—์„œ๋ถ€ํ„ฐ
์—์„œ๋ถ€ํ„ฐ
์—์„œ๋ถ€ํ„ฐ fi
fi
fi
fi
๋ฅผ
๋ฅผ
๋ฅผ
๋ฅผ ๋งŒ๋‚ 
๋งŒ๋‚ 
๋งŒ๋‚ 
๋งŒ๋‚  ๋•Œ๊นŒ์ง€
๋•Œ๊นŒ์ง€
๋•Œ๊นŒ์ง€
๋•Œ๊นŒ์ง€ ๋‚˜์˜ค๋Š”
๋‚˜์˜ค๋Š”
๋‚˜์˜ค๋Š”
๋‚˜์˜ค๋Š” ๋ฌธ์žฅ๋“ค์„
๋ฌธ์žฅ๋“ค์„
๋ฌธ์žฅ๋“ค์„
๋ฌธ์žฅ๋“ค์„ ์‹คํ–‰ํ•œ๋‹ค
์‹คํ–‰ํ•œ๋‹ค
์‹คํ–‰ํ•œ๋‹ค
์‹คํ–‰ํ•œ๋‹ค.
.
.
.
#
#
#
# fi
fi
fi
fi๋Š”
๋Š”
๋Š”
๋Š” then
then
then
then๋‹ค์Œ์—
๋‹ค์Œ์—
๋‹ค์Œ์—
๋‹ค์Œ์— ๋‚˜์˜ค๋Š”
๋‚˜์˜ค๋Š”
๋‚˜์˜ค๋Š”
๋‚˜์˜ค๋Š” ๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด ๋ชฉ๋ก์˜
๋ชฉ๋ก์˜
๋ชฉ๋ก์˜
๋ชฉ๋ก์˜ ๋์„
๋์„
๋์„
๋์„ ์˜๋ฏธํ•œ๋‹ค
์˜๋ฏธํ•œ๋‹ค
์˜๋ฏธํ•œ๋‹ค
์˜๋ฏธํ•œ๋‹ค.
.
.
.
22
โ€˜exitโ€™ ๋ช…๋ น์–ด์™€ โ€˜?โ€™ ๋ณ€์ˆ˜
 โ€˜exitโ€™๋ช…๋ น์–ด๋Š” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ค‘์ง€์‹œํ‚ค๊ณ  ๋ช…๋ นํ–‰์œผ
๋กœ ๋Œ์•„๊ฐ€๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉํ•จ
 ํŠน์ • ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•œ ํƒ“์— ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ข…๋ฃŒ์‹œ์ผœ์•ผ
ํ•  ๊ฒฝ์šฐ ์ฃผ๋กœ ์‚ฌ์šฉ
 ์ธ์ž๋Š” 0~255 ์‚ฌ์ด์˜ ์ˆซ์ž ์‚ฌ์šฉ ๊ฐ€๋Šฅ
 ์ธ์ž๊ฐ’ 0 : ํ”„๋กœ๊ทธ๋žจ์ด ์„ฑ๊ณต์ ์ธ ์ˆ˜ํ–‰์„ ๋งˆ์นจ
 0์ด์™ธ์˜ ๊ฐ’ : ์„ฑ๊ณต์ ์ธ ์ˆ˜ํ–‰์˜ ์‹คํŒจ๋ฅผ ์˜๋ฏธ
 โ€˜exitโ€™ ๋ช…๋ น์–ด์— ์ฃผ์–ด์ง€๋Š” ์ธ์ž๋Š” ์‰˜์˜ โ€˜?โ€™ ๋ณ€์ˆ˜์—
์ €์žฅ๋จ
23
โ€˜exitโ€™ ๋ช…๋ น์–ด์™€ โ€˜?โ€™ ๋ณ€์ˆ˜ ์˜ˆ์ œ
 ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑํ•˜๊ธฐ (bigfiles)
24
โ€˜exitโ€™ ๋ช…๋ น์–ด์™€ โ€˜?โ€™ ๋ณ€์ˆ˜ ์˜ˆ์ œ(Contโ€™d)
 ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ํ•˜๊ธฐ (bigfiles)
25
โ€˜if/elseโ€™ ๋ช…๋ น์–ด
 ์–‘์žํƒ์ผ(two-way
decision making)์„ ํ‘œ
ํ˜„ํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•จ
 โ€˜ifโ€™ ๋‹ค์Œ์˜ ๋ช…๋ น์–ด๊ฐ€ ๊ฑฐ
์ง“์œผ๋กœ ํ‰๊ฐ€๋˜๋ฉด โ€˜elseโ€™
๋‹ค์Œ์˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰
ํ•จ
ํ˜•์‹
ํ˜•์‹
ํ˜•์‹
ํ˜•์‹
if
if
if
if ๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด
then
then
then
then
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด(
(
(
(๋“ค
๋“ค
๋“ค
๋“ค)
)
)
)
else
else
else
else
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด(
(
(
(๋“ค
๋“ค
๋“ค
๋“ค)
)
)
)
fi
fi
fi
fi
26
โ€˜if/elseโ€™ ๋ช…๋ น์–ด ์˜ˆ์ œ
 ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ/์‹คํ–‰ํ•˜๊ธฐ (ifelseTest)
27
โ€˜if/elif/elseโ€™ ๋ช…๋ น์–ด
 ๋‹ค์ค‘ํƒ์ผ(multi-way
decision making)์„ ํ‘œํ˜„ํ•˜
๋Š”๋ฐ ์‚ฌ์šฉํ•จ
 โ€˜ifโ€™ ๋‹ค์Œ์˜ ๋ช…๋ น์–ด๊ฐ€ ๊ฑฐ์ง“์œผ
๋กœ ํ‰๊ฐ€๋˜๋ฉด โ€˜elifโ€™ ๋‹ค์Œ์˜ ๋ช…
๋ น์–ด๋ฅผ ํ‰๊ฐ€ํ•˜๊ณ  ์ด ๋ช…๋ น์–ด
์˜ ์ˆ˜ํ–‰์ด ์„ฑ๊ณตํ•˜๋ฉด โ€˜thenโ€™
์ดํ•˜์˜ ๋ฌธ์žฅ์„ ์‹คํ–‰
 ์ฃผ์–ด์ง„ โ€˜elifโ€™๋ฌธ์žฅ์ด ๋ชจ๋‘ ์‹ค
ํŒจ์ธ ๊ฒฝ์šฐ โ€˜elseโ€™์ดํ•˜์˜ ๋ฌธ
์žฅ์ด ์‹คํ–‰๋จ
ํ˜•์‹
ํ˜•์‹
ํ˜•์‹
ํ˜•์‹
if
if
if
if ๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด
then
then
then
then
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด(
(
(
(๋“ค
๋“ค
๋“ค
๋“ค)
)
)
)
elif
elif
elif
elif ๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด
then
then
then
then
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด(
(
(
(๋“ค
๋“ค
๋“ค
๋“ค)
)
)
)
elif
elif
elif
elif ๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด
then
then
then
then
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด(
(
(
(๋“ค
๋“ค
๋“ค
๋“ค)
)
)
)
else
else
else
else
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด(
(
(
(๋“ค
๋“ค
๋“ค
๋“ค)
)
)
)
fi
fi
fi
fi
28
โ€˜if/elif/elseโ€™ ๋ช…๋ น์–ด ์˜ˆ์ œ(1)
 ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑํ•˜๊ธฐ (tellme)
29
โ€˜if/elif/elseโ€™ ๋ช…๋ น์–ด ์˜ˆ์ œ(1)(Contโ€™d)
 ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ํ•˜๊ธฐ (tellme)
30
โ€˜if/elif/elseโ€™ ๋ช…๋ น์–ด ์˜ˆ์ œ(2)
 ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑํ•˜๊ธฐ (tellme2)
31
 ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ํ•˜๊ธฐ (tellme2)
โ€˜if/elif/elseโ€™ ๋ช…๋ น์–ด ์˜ˆ์ œ(2)(Contโ€™d)
32
๋‚ด์žฅ๋ช…๋ น์–ด โ€˜nullโ€™
 ์ฝœ๋ก (:)์œผ๋กœ ๋‚˜ํƒ€๋ƒ„
 ์‹ค์ œ ์•„๋ฌด๋Ÿฐ ์ž‘์—…๋„ ํ•˜์ง€
์•Š์œผ๋ฉฐ ๋‹จ์ง€ ์ข…๋ฃŒ ์ƒํƒœ๋ฅผ 0
์œผ๋กœ ๋Œ๋ ค์คŒ
 ์ฃผ๋กœ โ€˜ifโ€™๋‹ค์Œ์— ์–ด๋–ค ์ž‘์—…
๋„ ์ง€์ •ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์„ ๋•Œ
์‚ฌ์šฉ (โ€˜thenโ€™๋‹ค์Œ์— ๋ฌธ์žฅ์„
๊ธฐ์ˆ ํ•˜์ง€ ์•Š์œผ๋ฉด ์—๋Ÿฌ๊ฐ€
๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ)
 ๋ฌดํ•œ๋ฃจํ”„๋ฅผ ์ž‘์„ฑํ•  ๋•Œ๋„
์‚ฌ์šฉ
33
โ€˜caseโ€™ ๋ช…๋ น์–ด
 ๋‹ค์ค‘๋ถ„๊ธฐ(multiway
branching) ๋ช…๋ น์–ด๋กœ์จ,
if/elif ๋Œ€์‹  ์‚ฌ์šฉ๊ฐ€๋Šฅ
 โ€˜caseโ€™ ๋ณ€์ˆ˜์™€ ๋Œ€์‘๋˜๋Š”
โ€˜valueโ€™๊ฐ€ ์—†์œผ๋ฉด โ€˜*)โ€™ ๊ธฐํ˜ธ
๋‹ค์Œ์—์„œ๋ถ€ํ„ฐ โ€˜esacโ€™ ์‚ฌ์ด
์˜ ๋ฌธ์žฅ๋“ค์„ ์ˆ˜ํ–‰ํ•จ
 โ€˜*)โ€™ ๊ธฐํ˜ธ์˜ ์—ญํ• ์€ if/else
์กฐ๊ฑด๋ฌธ์—์„œ else์™€ ๋™์ผ
 โ€˜caseโ€™ ๋ณ€์ˆ˜์˜ ๊ฐ’์—๋Š” ์™€์ผ
๋“œ์นด๋“œ๋‚˜ |(OR์—ฐ์‚ฐ์ž)๋ฅผ
์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ
ํ˜•์‹
ํ˜•์‹
ํ˜•์‹
ํ˜•์‹
case
case
case
case ๋ณ€์ˆ˜
๋ณ€์ˆ˜
๋ณ€์ˆ˜
๋ณ€์ˆ˜ in
in
in
in
value1)
value1)
value1)
value1)
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด(
(
(
(๋“ค
๋“ค
๋“ค
๋“ค)
)
)
)
;;
;;
;;
;;
value2)
value2)
value2)
value2)
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด(
(
(
(๋“ค
๋“ค
๋“ค
๋“ค)
)
)
)
;;
;;
;;
;;
*)
*)
*)
*)
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด(
(
(
(๋“ค
๋“ค
๋“ค
๋“ค)
)
)
)
;;
;;
;;
;;
esac
esac
esac
esac
34
โ€˜caseโ€™ ๋ช…๋ น์–ด ์˜ˆ์ œ
 ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑํ•˜๊ธฐ (xcolors)
35
โ€˜caseโ€™ ๋ช…๋ น์–ด ์˜ˆ์ œ(Contโ€™d)
 ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ํ•˜๊ธฐ (xcolors)
36
๋ฃจํ”„ ๋ช…๋ น์–ด
 ๋ฃจํ”„ ๋ช…๋ น์–ด๋Š” ๋ช…๋ น์–ด ํ˜น์€ ๋ช…๋ น์–ด ์ง‘ํ•ฉ์„,
์ผ์ • ํšŒ์ˆ˜๋งŒํผ ๋ฐ˜๋ณตํ•˜๊ฑฐ๋‚˜ ํŠน์ •ํ•œ ์กฐ๊ฑด์„
๋งŒ์กฑํ•  ๋•Œ๊นŒ์ง€ ๊ณ„์† ์‹คํ–‰์‹œ์ผœ์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ
์— ์‚ฌ์šฉ
 ๋ฐฐ์‹œ ์‰˜์—์„œ๋Š” for, while, until๊ณผ ๊ฐ™์€ ์„ธ ๊ฐ€
์ง€ ๋ฃจํ”„๋ฅผ ์ง€์›ํ•จ
37
โ€˜forโ€™ ๋ช…๋ น์–ด
 โ€˜forโ€™ ๋ฃจํ”„ ๋ช…๋ น์–ด๋Š” ์ •ํ•ด์ง„ ํšŸ์ˆ˜์˜ ๋ฐ˜๋ณต์„ ์œ„ํ•ด ์‚ฌ
์šฉ
 ์ผ๋ จ์˜ ํŒŒ์ผ์ด๋‚˜ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•ด ๋™์ผํ•œ ๋ช…๋ น์–ด๋“ค
์„ ๋ฐ˜๋ณตํ•˜์—ฌ ์‹คํ–‰์‹œํ‚ด
 ๋ณ€์ˆ˜(variable)์— ๋‹จ์–ด๊ฐ€ ๋Œ€์ž…๋˜๋ฉด ๋ฃจํ”„์˜ ๋ชธ์ฒด์—
ํ•ด๋‹นํ•˜๋Š” โ€˜doโ€™์™€ โ€˜doneโ€™ ์‚ฌ์ด์˜ ๋ช…๋ น์–ด๋“ค์ด ์‹คํ–‰๋จ
ํ˜•์‹
ํ˜•์‹
ํ˜•์‹
ํ˜•์‹
for variable in
for variable in
for variable in
for variable in word_list
word_list
word_list
word_list
do
do
do
do
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด(
(
(
(๋“ค
๋“ค
๋“ค
๋“ค)
)
)
)
done
done
done
done
38
โ€˜forโ€™ ๋ช…๋ น์–ด ์˜ˆ์ œ(1)
 ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ/์‹คํ–‰ํ•˜๊ธฐ (forloop)
39
โ€˜forโ€™ ๋ช…๋ น์–ด ์˜ˆ์ œ(2)
 ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ/์‹คํ–‰ํ•˜๊ธฐ (backup)
40
โ€˜whileโ€™ ๋ช…๋ น์–ด
 โ€˜whileโ€™ ๋ช…๋ น์–ด๋Š” ๋‹ค์Œ์— ๋”ฐ๋ผ์˜ค๋Š” ๋ช…๋ น์–ด๋ฅผ ํ‰๊ฐ€ํ•ด์„œ, ์ข…
๋ฃŒ์ƒํƒœ๊ฐ€ 0์ด๋ฉด ๋ฃจํ”„ ๋ชธ์ฒด(do์™€ done์‚ฌ์ด)์˜ ๋ช…๋ น์–ด๋“ค์„
์ˆ˜ํ–‰์‹œํ‚ด
 โ€˜whileโ€™ ๋ฃจํ”„์— ์˜ํ•ด ๋ช…๋ น์–ด์˜ ์ข…๋ฃŒ ์ƒํƒœ๊ฐ€ 0์ด ์•„๋‹Œ ๊ฐ’์œผ
๋กœ ๋ฐ”๋€” ๋•Œ๊นŒ์ง€ ๋ฃจํ”„๊ฐ€ ๊ณ„์†๋จ
 ์ข…๋ฃŒ ์ƒํƒœ๊ฐ€ 0์ด ์•„๋‹Œ ๊ฐ’์ธ ๊ฒฝ์šฐ ํ”„๋กœ๊ทธ๋žจ์˜ ์ œ์–ด๋Š” done
๋‹ค์Œ์œผ๋กœ ์˜ฎ๊ฒจ์ ธ์„œ ๊ณ„์† ์‹คํ–‰
ํ˜•์‹
ํ˜•์‹
ํ˜•์‹
ํ˜•์‹
while
while
while
while ๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด
do
do
do
do
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด(
(
(
(๋“ค
๋“ค
๋“ค
๋“ค)
)
)
)
done
done
done
done
41
โ€˜whileโ€™ ๋ช…๋ น์–ด ์˜ˆ์ œ(1)
 ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ/์‹คํ–‰ํ•˜๊ธฐ (num)
42
โ€˜whileโ€™ ๋ช…๋ น์–ด ์˜ˆ์ œ(2)
 ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ/์‹คํ–‰ํ•˜๊ธฐ (quiz)
43
โ€˜whileโ€™ ๋ช…๋ น์–ด ์˜ˆ์ œ(3)
 ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ/์‹คํ–‰ํ•˜๊ธฐ (sayit)
44
โ€˜untilโ€™ ๋ช…๋ น์–ด
 โ€˜whileโ€™ ๋ช…๋ น์–ด์™€ ์œ ์‚ฌํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๋‚˜ until ๋‹ค์Œ์—
๋‚˜์˜ค๋Š” ๋ช…๋ น์–ด๊ฐ€ ์‹คํŒจํ•ด์•ผ ๋ฃจํ”„๊ฐ€ ์‹คํ–‰๋œ๋‹ค๋Š” ์ 
์ด ๋‹ค๋ฆ„
 ์ฆ‰, ๋ช…๋ น์–ด์˜ ์ข…๋ฃŒ ์ƒํƒœ๊ฐ€ 0์ด ์•„๋‹Œ ๊ฒฝ์šฐ์— ๋ฃจํ”„๊ฐ€
์ˆ˜ํ–‰๋จ
 ์ข…๋ฃŒ ์ƒํƒœ๊ฐ€ 0์ด ๋˜๋ฉด, ๋ฃจํ”„๊ฐ€ ์ข…๋ฃŒํ•˜๊ณ  ํ‚ค์›Œ๋“œ
done ๋‹ค์Œ ๋ถ€๋ถ„์ด ์‹คํ–‰๋จ ํ˜•์‹
ํ˜•์‹
ํ˜•์‹
ํ˜•์‹
until
until
until
until ๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด
do
do
do
do
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด(
(
(
(๋“ค
๋“ค
๋“ค
๋“ค)
)
)
)
done
done
done
done
45
โ€˜untilโ€™ ๋ช…๋ น์–ด ์˜ˆ์ œ
 ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ/์‹คํ–‰ํ•˜๊ธฐ (hour)
46
โ€˜selectโ€™ ๋ช…๋ น์–ด
 ๋ฐฐ์‹œ ์‰˜์—์„œ๋Š” ๋ฉ”๋‰ด ์ƒ์„ฑ์„ ์œ„ํ•ด select๋ผ๋Š” ์ƒˆ๋กœ
์šด ๋ฃจํ”„๋ฅผ ์ œ๊ณตํ•จ
 ์ˆซ์ž(์ผ๋ จ๋ฒˆํ˜ธ)๋ฅผ ์„ ํƒ ํ•ญ๋ชฉ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋‰ด๋ฅผ
ํ‘œ์ค€ ์—๋Ÿฌ๋กœ ์ถœ๋ ฅํ•˜๋ฉด ํ”„๋กฌํ”„ํŠธ PS3์„ ์ด์šฉํ•ด ์‚ฌ
์šฉ์ž์˜ ์ž…๋ ฅ์„ ๊ธฐ๋‹ค๋ฆผ(PS3์˜ ๊ธฐ๋ณธ๊ฐ’์€ #? ์ด๋‹ค)
 ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๊ฐ’์€ ๋ฐฐ์‹œ ์‰˜์˜ ๋‚ด์žฅ๋ณ€์ˆ˜์ธ
REPLY์— ์ €์žฅ๋จ ํ˜•์‹
ํ˜•์‹
ํ˜•์‹
ํ˜•์‹
select
select
select
select var
var
var
var in wordlist
in wordlist
in wordlist
in wordlist
do
do
do
do
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด
๋ช…๋ น์–ด(
(
(
(๋“ค
๋“ค
๋“ค
๋“ค)
)
)
)
done
done
done
done
47
โ€˜selectโ€™ ๋ช…๋ น์–ด ์˜ˆ์ œ(1)
 ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ/์‹คํ–‰ํ•˜๊ธฐ (runit)
48
โ€˜selectโ€™ ๋ช…๋ น์–ด ์˜ˆ์ œ(2)
 ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑํ•˜๊ธฐ (class)
49
โ€˜selectโ€™ ๋ช…๋ น์–ด ์˜ˆ์ œ(2)(Contโ€™d)
 ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ํ•˜๊ธฐ (class)
50
๋ฃจํ”„ ์ œ์–ด ๋ช…๋ น์–ด
 ํŠน๋ณ„ํ•œ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜๋ฉด, ๋ฃจํ”„๋ฅผ ํƒˆ์ถœํ•˜๊ฑฐ
๋‚˜, ๋ฃจํ”„์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์œผ๋กœ ๋˜๋Œ์•„๊ฐ€์•ผ ํ•˜๋Š”
๊ฒฝ์šฐ
 ๋ฐฐ์‹œ ์‰˜์—์„œ๋Š” ์ด๋Ÿฌํ•œ ํŠน์ • ์ƒํ™ฉ์„ ์ฒ˜๋ฆฌํ• 
์ˆ˜ ์žˆ๋Š” ๋ฃจํ”„ ์ œ์–ด ๋ช…๋ น์–ด๋“ค์„ ์ œ๊ณตํ•จ
 shift, break, continue ๋“ฑ
51
โ€˜shiftโ€™ ๋ช…๋ น์–ด
 ์ธ์ž ๋ชฉ๋ก์˜ ์ˆœ์„œ์—์„œ, ์ง€์ •ํ•œ ํšŸ์ˆ˜๋งŒํผ ์™ผ์ชฝ์œผ
๋กœ ์ด๋™์‹œํ‚ด
 ์ธ์ž ๋ชฉ๋ก์ด ์ผ๋‹จ ์ด๋™๋˜๊ณ  ๋‚˜๋ฉด ์˜๊ตฌํžˆ ์ œ๊ฑฐ๋จ
 ์ฆ‰, ์™ผ์ชฝ์—์„œ ๋ช‡ ๋ฒˆ์งธ ์ธ์ž๊นŒ์ง€ ์ œ๊ฑฐํ•  ๊ฒƒ์ธ์ง€๋ฅผ
๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ
ํ˜•์‹
ํ˜•์‹
ํ˜•์‹
ํ˜•์‹
shift [n]
shift [n]
shift [n]
shift [n]
52
โ€˜shiftโ€™ ๋ช…๋ น์–ด ์˜ˆ์ œ(1)
 ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ/์‹คํ–‰ํ•˜๊ธฐ (shifter)
53
โ€˜shiftโ€™ ๋ช…๋ น์–ด ์˜ˆ์ œ(2)
 ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ/์‹คํ–‰ํ•˜๊ธฐ (doit)
54
โ€˜breakโ€™ ๋ช…๋ น์–ด
 ๋ฃจํ”„๋ฅผ ์ฆ‰์‹œ ํƒˆ์ถœํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ(ํ”„๋กœ๊ทธ
๋žจ์€ ๊ณ„์† ์ง„ํ–‰๋จ)
 โ€˜breakโ€™ ๋ช…๋ น์–ด๊ฐ€ ์‹คํ–‰๋˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์˜ ์ œ์–ด๋Š”
๊ณง๋ฐ”๋กœ done ๋‹ค์Œ์œผ๋กœ ์ด๋™ํ•จ
 ๋ฌดํ•œ ๋ฃจํ”„์˜ ํƒˆ์ถœ์— ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ
ํ˜•์‹
ํ˜•์‹
ํ˜•์‹
ํ˜•์‹
break [n]
break [n]
break [n]
break [n]
55
โ€˜breakโ€™ ๋ช…๋ น์–ด ์˜ˆ์ œ
 ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ/์‹คํ–‰ํ•˜๊ธฐ (loopbreak)
56
โ€˜continueโ€™ ๋ช…๋ น์–ด
 ์ง€์ •ํ•œ ์กฐ๊ฑด์ด ์ฐธ์ด๋ฉด ์ œ์–ด๋ฅผ ๋ฃจํ”„์˜ ์‹œ์ž‘ ๋ถ€๋ถ„
์œผ๋กœ ๋˜๋Œ๋ฆผ
 โ€˜continueโ€™ ์•„๋ž˜์˜ ๋ช…๋ น์–ด๋“ค์€ ๋ชจ๋‘ ๋ฌด์‹œํ•จ
ํ˜•์‹
ํ˜•์‹
ํ˜•์‹
ํ˜•์‹
continue [n]
continue [n]
continue [n]
continue [n]
57
โ€˜continueโ€™ ๋ช…๋ น์–ด ์˜ˆ์ œ
 ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ/์‹คํ–‰ํ•˜๊ธฐ (namelist)
58
์ค‘์ฒฉ ๋ฃจํ”„์˜ ์ œ์–ด
 ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑํ•˜๊ธฐ (months)
59
์ค‘์ฒฉ ๋ฃจํ”„์˜ ์ œ์–ด(Contโ€™d)
 ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ํ•˜๊ธฐ (months)
60
๋ฃจํ”„์˜ ์ถœ๋ ฅ์„ ํŒŒ์ผ๋กœ ๋ฆฌ๋‹ค์ด๋ ‰์…˜
 ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ/์‹คํ–‰ํ•˜๊ธฐ (numberit)
61
๋ฃจํ”„์˜ ์ถœ๋ ฅ์„ ์œ ๋‹‰์Šค๋ช…๋ น์–ด๋กœ ํŒŒ์ดํ”„ํ•˜๊ธฐ
 ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ/์‹คํ–‰ํ•˜๊ธฐ (pipe)
๋ฐฐ์‹œ ์‰˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
(๊ณ ๊ธ‰)
63
ํ•จ์ˆ˜(1)
 ํ•จ์ˆ˜๋Š” ATT์˜ ์œ ๋‹‰์Šค์ธ System V R2์— ํƒ‘์žฌ๋œ ๋ณธ ์‰˜์—
์„œ ์ฒ˜์Œ ์ง€์›ํ•˜๊ธฐ ์‹œ์ž‘
 ๋ช…๋ น์–ด๋‚˜ ๋ช…๋ น์–ด ์ง‘ํ•ฉ์— ๋Œ€ํ•œ ์ด๋ฆ„
 ํšจ์œจ์„ฑ์„ ๋†’์ด๊ฑฐ๋‚˜ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ชจ๋“ˆํ™”๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ
 ์ž์‹ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ํ˜„์žฌ ์‰˜ ๋‚ด์—์„œ ์‹คํ–‰๋จ
ํ˜•์‹
ํ˜•์‹
ํ˜•์‹
ํ˜•์‹
์˜ˆ์ œ
์˜ˆ์ œ
์˜ˆ์ œ
์˜ˆ์ œ
function ํ•จ์ˆ˜์ด๋ฆ„ { ๋ช…๋ น์–ด(๋“ค) ; ๋ช…๋ น์–ด(๋“ค); }
function dir { echo โ€œDirectories: โ€œ; ls -l | awk โ€˜/^d/ {print $NF} โ€™; }
64
ํ•จ์ˆ˜(2)
 ํ•จ์ˆ˜ ์„ค์ • ํ•ด์ œ
โ–บ unset ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•จ์ˆ˜๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ œ๊ฑฐ์‹œํ‚ฌ
์ˆ˜ ์žˆ๋‹ค
 ํ•จ์ˆ˜์˜ ์ต์ŠคํฌํŠธ(export)
โ–บ ํ•จ์ˆ˜๋ฅผ ์ž์‹ ์‰˜๋“ค์—๊ฒŒ ์ต์ŠคํฌํŠธ ํ•  ์ˆ˜ ์žˆ๋‹ค
ํ˜•์‹
ํ˜•์‹
ํ˜•์‹
ํ˜•์‹
unset โ€“f function_name
ํ˜•์‹
ํ˜•์‹
ํ˜•์‹
ํ˜•์‹
export โ€“f function_name
65
ํ•จ์ˆ˜์— ๊ด€ํ•œ ์ค‘์š”ํ•œ ๊ทœ์น™๋“ค
 ํ•จ์ˆ˜๋Š” ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ์ •์˜ํ•ด์•ผ ํ•จ
 ํ•จ์ˆ˜๋Š” ํ˜„์žฌ ํ™˜๊ฒฝ ํ•˜์—์„œ ์‹คํ–‰๋จ. ํ˜ธ์ถœํ•œ ์Šคํฌ๋ฆฝํŠธ์™€ ๋ณ€์ˆ˜๋ฅผ ๊ณต์œ ํ•˜๊ณ 
์ธ์ž ์—ญ์‹œ ์œ„์น˜ ์ธ์ž๋กœ ์ง€์ •ํ•˜์—ฌ ํ•จ์ˆ˜์— ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Œ. โ€˜localโ€™ ํ•จ์ˆ˜๋ฅผ
์‚ฌ์šฉํ•˜์—ฌ ์ง€์—ญ๋ณ€์ˆ˜๋ฅผ ํ•จ์ˆ˜ ๋‚ด์—์„œ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Œ
 ํ•จ์ˆ˜ ์•ˆ์—์„œ โ€˜exitโ€™ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์Šคํฌ๋ฆฝํŠธ ์ž์ฒด๊ฐ€ ์ข…๋ฃŒ๋จ
 ํ•จ์ˆ˜ ๋‚ด์—์„œ ์‚ฌ์šฉํ•œ โ€˜returnโ€™ ๋ฌธ์€ ๊ฐ€์žฅ ์ตœ๊ทผ์— ์‹คํ–‰๋œ ๋ช…๋ น์–ด์˜ ์ข…๋ฃŒ
์ƒํƒœ ๊ฐ’์ด๋‚˜, ์ง€์ •ํ•œ ์ธ์ž ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•จ
 ๋‚ด์žฅ ๋ช…๋ น์–ด โ€˜export โ€“fโ€™ ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•จ์ˆ˜๋ฅผ ์ž์‹ ์‰˜์— ์ต์ŠคํฌํŠธ ํ•จ
 โ€˜declare โ€“fโ€™ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•จ์ˆ˜์™€ ๊ทธ ์ •์˜๋ฅผ ์ถœ๋ ฅํ•จ
 ํŠธ๋žฉ(trap)์€ ๋ณ€์ˆ˜์™€ ๊ฐ™์ด ํ•จ์ˆ˜ ๊ฐ„์—์„œ๋„ ์ „์—ญ์ž„. ๋”ฐ๋ผ์„œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ
ํ•œ ์Šคํฌ๋ฆฝํŠธ์™€ ํ•จ์ˆ˜ ๋‘˜ ๋‹ค trap์˜ ์ •์˜๋ฅผ ๊ณต์œ ํ•จ
 ํ•จ์ˆ˜๊ฐ€ ๋‹ค๋ฅธ ํŒŒ์ผ์— ์ €์žฅ๋˜์–ด ์žˆ๋‹ค๋ฉด ๋งˆ์นจํ‘œ(. ํ˜น์€ source) ๋ช…๋ น์–ด๋ฅผ
์‚ฌ์šฉํ•˜์—ฌ ํ˜„์žฌ ์Šคํฌ๋ฆฝํŠธ์— ๋ถˆ๋Ÿฌ๋“ค์ผ ์ˆ˜ ์žˆ์Œ
 ํ•จ์ˆ˜๋Š” ์ž์‹ ์„ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Œ. ์žฌ๊ท€ ํ˜ธ์ถœ ํšŸ์ˆ˜๋Š” ์ œํ•œ์ด ์—†์Œ
66
ํ•จ์ˆ˜ ์ธ์ž์™€ ๋ฐ˜ํ™˜๊ฐ’
 ์ธ์ž
โ–บ ์ธ์ž์˜ ์ „๋‹ฌ์€ ์œ„์น˜ ์ธ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•จ์ˆ˜๋กœ ๋„˜๊ฒจ์คŒ
โ–บ ํ•จ์ˆ˜์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์œ„์น˜ ์ธ์ž๋Š” scope๊ฐ€ ํ•จ์ˆ˜๋‚ด๋กœ ํ•œ์ •๋จ
โ–บ ํ•จ์ˆ˜ ๋ฐ–์—์„œ ์‚ฌ์šฉ์ค‘์ธ ๋‹ค๋ฅธ ์œ„์น˜ ์ธ์ž์—๊ฒŒ๋Š” ์•„๋ฌด๋Ÿฐ ์˜ํ–ฅ์„ ๋ฏธ์น˜
์ง€ ์•Š์Œ
 ๋‚ด์žฅ ๋ช…๋ น์–ด โ€˜localโ€™
โ–บ ํ˜„์žฌ ํ•จ์ˆ˜์—์„œ๋งŒ ์œ ํšจํ•œ ์ง€์—ญ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑ์‹œํ‚ด
 ๋‚ด์žฅ ๋ช…๋ น์–ด โ€˜returnโ€™
โ–บ ํ•จ์ˆ˜๋ฅผ ์ข…๋ฃŒํ•œ ํ›„, ์ œ์–ด๋ฅผ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ ๊ณณ์œผ๋กœ ๋˜๋Œ๋ ค์คŒ
โ–บ โ€˜returnโ€™ ๋ช…๋ น์–ด์— ์•„๋ฌด๋Ÿฐ ์ธ์ž๋„ ์ง€์ •ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ, ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜
๊ฐ’์€ ์Šคํฌ๋ฆฝํŠธ ์•ˆ์—์„œ ์ตœ๊ทผ์— ์‚ฌ์šฉ๋œ ๋ช…๋ น์–ด์˜ ์ข…๋ฃŒ ์ƒํƒœ๊ฐ€ ๋จ
โ–บ โ€˜returnโ€™ ๋ช…๋ น์–ด์— 0~255 ์‚ฌ์ด์˜ ์ •์ˆ˜๋ฅผ ์ธ์ž๋กœ ์ง€์ •ํ•˜๋ฉด ๊ทธ ๊ฐ’์ด
โ€˜?โ€™ ๋ณ€์ˆ˜์— ์ €์žฅ๋จ
67
ํ•จ์ˆ˜ ์˜ˆ์ œ(1)
 ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑํ•˜๊ธฐ (checker)
68
ํ•จ์ˆ˜ ์˜ˆ์ œ(1)(Contโ€™d)
 ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ํ•˜๊ธฐ (checker)
69
ํ•จ์ˆ˜ ์˜ˆ์ œ(2)
 ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ/์‹คํ–‰ํ•˜๊ธฐ (do_increment)
๋ณ€์ˆ˜
๋ณ€์ˆ˜
๋ณ€์ˆ˜
๋ณ€์ˆ˜ sum์€
์€
์€
์€ incrementํ•จ์ˆ˜์—์„œ
ํ•จ์ˆ˜์—์„œ
ํ•จ์ˆ˜์—์„œ
ํ•จ์ˆ˜์—์„œ ์ •์˜ํ•˜์˜€์ง€๋งŒ
์ •์˜ํ•˜์˜€์ง€๋งŒ
์ •์˜ํ•˜์˜€์ง€๋งŒ
์ •์˜ํ•˜์˜€์ง€๋งŒ,
์ง€์—ญ๋ณ€์ˆ˜๊ฐ€
์ง€์—ญ๋ณ€์ˆ˜๊ฐ€
์ง€์—ญ๋ณ€์ˆ˜๊ฐ€
์ง€์—ญ๋ณ€์ˆ˜๊ฐ€ ๋œ๋‹ค
๋œ๋‹ค
๋œ๋‹ค
๋œ๋‹ค. ๋”ฐ๋ผ์„œ
๋”ฐ๋ผ์„œ
๋”ฐ๋ผ์„œ
๋”ฐ๋ผ์„œ ํ•จ์ˆ˜
ํ•จ์ˆ˜
ํ•จ์ˆ˜
ํ•จ์ˆ˜ ๋ฐ–์—์„œ๋Š”
๋ฐ–์—์„œ๋Š”
๋ฐ–์—์„œ๋Š”
๋ฐ–์—์„œ๋Š”
์‚ฌ์šฉํ• 
์‚ฌ์šฉํ• 
์‚ฌ์šฉํ• 
์‚ฌ์šฉํ•  ์ˆ˜
์ˆ˜
์ˆ˜
์ˆ˜ ์—†๋‹ค
์—†๋‹ค
์—†๋‹ค
์—†๋‹ค. ์•„๋ฌด๊ฒƒ๋„
์•„๋ฌด๊ฒƒ๋„
์•„๋ฌด๊ฒƒ๋„
์•„๋ฌด๊ฒƒ๋„ ์ถœ๋ ฅ๋˜์ง€
์ถœ๋ ฅ๋˜์ง€
์ถœ๋ ฅ๋˜์ง€
์ถœ๋ ฅ๋˜์ง€ ์•Š๋Š”๋‹ค
์•Š๋Š”๋‹ค
์•Š๋Š”๋‹ค
์•Š๋Š”๋‹ค
70
ํ•จ์ˆ˜ ์˜ˆ์ œ(3)
 ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ/์‹คํ–‰ํ•˜๊ธฐ (do_square)
71
ํ•จ์ˆ˜์™€ โ€˜sourceโ€™ ๋ช…๋ น์–ด
 ํ•จ์ˆ˜ ์ €์žฅ
โ–บ ํ•จ์ˆ˜๋ฅผ ์ข…์ข… .profile์— ์ •์˜ํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธํ•จ๊ณผ ๋™์‹œ์— ์ •์˜
๋˜๋„๋ก ํ•จ
โ–บ ์ €์žฅํ•ด๋‘” ํ•จ์ˆ˜๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋Š” ๋งˆ์นจํ‘œ(. ํ˜น์€ source) ๋ช…๋ น์–ด์™€
ํŒŒ์ผ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜๋ฉด, ํ•จ์ˆ˜์˜ ์ •์˜๊ฐ€ ํ™œ์„ฑํ™”๋จ
72
์‹œ๊ทธ๋„ ํŠธ๋ž˜ํ•‘(1)
 ํ”„๋กœ๊ทธ๋žจ ์ˆ˜ํ–‰ ๋„์ค‘ ์‚ฌ์šฉ์ž๊ฐ€ Ctrl โ€“C๋‚˜ Ctrl-  ํ‚ค๋ฅผ ๋ˆ„๋ฅด๋ฉด ์‹œ๊ทธ๋„์ด
๋„์ฐฉํ•˜์ž๋งˆ์ž ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋จ
 ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋Ÿฌํ•œ ์‹œ๊ทธ๋„์— ๋Œ€ํ•ด ์ ์ ˆํ•œ ๋™์ž‘์„ ์ง€์ •ํ•ด ์ค„ ์ˆ˜ ์žˆ์Œ. ์ฆ‰,
์‹œ๊ทธ๋„์„ ๋ฌด์‹œํ•˜๊ฑฐ๋‚˜, ํ•„์š”ํ•œ ๋ช‡๋ช‡ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ข…๋ฃŒํ•˜๋„๋ก ์„ค์ •
ํ•ด์คŒ
 โ€˜trapโ€™ ๋ช…๋ น์–ด๋Š” ์‹œ๊ทธ๋„์— ๋Œ€ํ•ด ์ ์ ˆํ•œ ๋Œ€์ฒ˜ ๋ฐฉ๋ฒ•์„ ์„ค์ •ํ•  ๋•Œ ์‚ฌ์šฉ
ํ˜•์‹
ํ˜•์‹
ํ˜•์‹
ํ˜•์‹
์˜ˆ์ œ
์˜ˆ์ œ
์˜ˆ์ œ
์˜ˆ์ œ
trap โ€˜๋ช…๋ น์–ด; ๋ช…๋ น์–ดโ€™ ์‹œ๊ทธ๋„ ๋ฒˆํ˜ธ
trap โ€˜๋ช…๋ น์–ด; ๋ช…๋ น์–ดโ€™ ์‹œ๊ทธ๋„ ์ด๋ฆ„
trap โ€˜rm tmp*; exit 1โ€™ 0 1 2 15
trap โ€˜rm tmp*; exit 1โ€™ EXIT HUP INT TERM
์‹œ๊ทธ๋„
์‹œ๊ทธ๋„
์‹œ๊ทธ๋„
์‹œ๊ทธ๋„ 1(์ •์ง€
์ •์ง€
์ •์ง€
์ •์ง€, hangup), 2(์ธํ„ฐ๋ŸฝํŠธ
์ธํ„ฐ๋ŸฝํŠธ
์ธํ„ฐ๋ŸฝํŠธ
์ธํ„ฐ๋ŸฝํŠธ, interrupt), ํ˜น์€
ํ˜น์€
ํ˜น์€
ํ˜น์€ 15(์ข…๋ฃŒ
์ข…๋ฃŒ
์ข…๋ฃŒ
์ข…๋ฃŒ, software termination)๊ฐ€
๊ฐ€
๊ฐ€
๊ฐ€
๋„์ฐฉํ•˜๋ฉด
๋„์ฐฉํ•˜๋ฉด
๋„์ฐฉํ•˜๋ฉด
๋„์ฐฉํ•˜๋ฉด ๋ชจ๋“ 
๋ชจ๋“ 
๋ชจ๋“ 
๋ชจ๋“  tmp ํŒŒ์ผ์„
ํŒŒ์ผ์„
ํŒŒ์ผ์„
ํŒŒ์ผ์„ ์ง€์šฐ๊ณ 
์ง€์šฐ๊ณ 
์ง€์šฐ๊ณ 
์ง€์šฐ๊ณ  ์ข…๋ฃŒํ•œ๋‹ค
์ข…๋ฃŒํ•œ๋‹ค
์ข…๋ฃŒํ•œ๋‹ค
์ข…๋ฃŒํ•œ๋‹ค.
73
์‹œ๊ทธ๋„ ํŠธ๋ž˜ํ•‘(2)
 ์‹œ๊ทธ๋„ ์žฌ์„ค์ •
โ–บ ์‹œ๊ทธ๋„์„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์žฌ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” โ€˜trapโ€™๋ช…๋ น์–ด ๋‹ค์Œ์—
์‹œ๊ทธ๋„ ์ด๋ฆ„์ด๋‚˜ ๋ฒˆํ˜ธ๋งŒ ์ง€์ •ํ•จ
 ์‹œ๊ทธ๋„ ๋ฌด์‹œ
โ–บ โ€˜trapโ€™ ๋ช…๋ น์–ด ๋‹ค์Œ์— ํ•œ ์Œ์˜ ๋นˆ ๋”ฐ์˜ดํ‘œ๊ฐ€ ์˜ค๋ฉด, ๋’ค์— ๋‚˜์—ดํ•œ ์‹œ๊ทธ
๋„๋“ค์ด ๋ฌด์‹œ๋จ
์˜ˆ์ œ
์˜ˆ์ œ
์˜ˆ์ œ
์˜ˆ์ œ
trap 2 ๋˜๋Š”
๋˜๋Š”
๋˜๋Š”
๋˜๋Š” trap INT
2๋ฒˆ
๋ฒˆ
๋ฒˆ
๋ฒˆ ์‹œ๊ทธ๋„์ธ
์‹œ๊ทธ๋„์ธ
์‹œ๊ทธ๋„์ธ
์‹œ๊ทธ๋„์ธ SIGINT๋ฅผ
๋ฅผ
๋ฅผ
๋ฅผ ์ดˆ๊ธฐ๊ฐ’์œผ๋กœ
์ดˆ๊ธฐ๊ฐ’์œผ๋กœ
์ดˆ๊ธฐ๊ฐ’์œผ๋กœ
์ดˆ๊ธฐ๊ฐ’์œผ๋กœ ์žฌ์„ค์ •ํ•จ
์žฌ์„ค์ •ํ•จ
์žฌ์„ค์ •ํ•จ
์žฌ์„ค์ •ํ•จ. ์ด
์ด
์ด
์ด ์‹œ๊ทธ๋„์€
์‹œ๊ทธ๋„์€
์‹œ๊ทธ๋„์€
์‹œ๊ทธ๋„์€ ํ”„๋กœ์„ธ์Šค๋ฅผ
ํ”„๋กœ์„ธ์Šค๋ฅผ
ํ”„๋กœ์„ธ์Šค๋ฅผ
ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฃฝ์ผ
์ฃฝ์ผ
์ฃฝ์ผ
์ฃฝ์ผ
๋•Œ
๋•Œ
๋•Œ
๋•Œ ์‚ฌ์šฉํ•จ
์‚ฌ์šฉํ•จ
์‚ฌ์šฉํ•จ
์‚ฌ์šฉํ•จ. ์˜ˆ๋ฅผ๋“ค๋ฉด
์˜ˆ๋ฅผ๋“ค๋ฉด
์˜ˆ๋ฅผ๋“ค๋ฉด
์˜ˆ๋ฅผ๋“ค๋ฉด Ctrl - C
์˜ˆ์ œ
์˜ˆ์ œ
์˜ˆ์ œ
์˜ˆ์ œ
trap โ€œ โ€ 1 2 ๋˜๋Š”
๋˜๋Š”
๋˜๋Š”
๋˜๋Š” trap โ€œ โ€ HUP INT
์‰˜์€
์‰˜์€
์‰˜์€
์‰˜์€ 1๋ฒˆ
๋ฒˆ
๋ฒˆ
๋ฒˆ ์‹œ๊ทธ๋„
์‹œ๊ทธ๋„
์‹œ๊ทธ๋„
์‹œ๊ทธ๋„(SIGHUP)๊ณผ
๊ณผ
๊ณผ
๊ณผ 2๋ฒˆ
๋ฒˆ
๋ฒˆ
๋ฒˆ ์‹œ๊ทธ๋„
์‹œ๊ทธ๋„
์‹œ๊ทธ๋„
์‹œ๊ทธ๋„(SIGINT)์„
์„
์„
์„ ๋ฌด์‹œํ•จ
๋ฌด์‹œํ•จ
๋ฌด์‹œํ•จ
๋ฌด์‹œํ•จ
74
ํŠธ๋žฉ ์ƒํƒœ ๋ณด๊ธฐ
 โ€˜trapโ€™ ์„ ์ž…๋ ฅํ•˜๋ฉด trap์— ์ง€์ •๋œ ๋ชจ๋“  ๋‚ด์šฉ์ด ์ถœ
๋ ฅ๋จ
# ์‹œ๊ทธ๋„
์‹œ๊ทธ๋„
์‹œ๊ทธ๋„
์‹œ๊ทธ๋„ 2 (Ctrl โ€“C)๊ฐ€
๊ฐ€
๊ฐ€
๊ฐ€ ๋“ค์–ด์˜ค๋ฉด
๋“ค์–ด์˜ค๋ฉด
๋“ค์–ด์˜ค๋ฉด
๋“ค์–ด์˜ค๋ฉด ์Šคํฌ๋ฆฝํŠธ๋ฅผ
์Šคํฌ๋ฆฝํŠธ๋ฅผ
์Šคํฌ๋ฆฝํŠธ๋ฅผ
์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ข…๋ฃŒ
์ข…๋ฃŒ
์ข…๋ฃŒ
์ข…๋ฃŒ
์‹œํ‚ค๋„๋ก
์‹œํ‚ค๋„๋ก
์‹œํ‚ค๋„๋ก
์‹œํ‚ค๋„๋ก ์„ค์ •ํ•จ
์„ค์ •ํ•จ
์„ค์ •ํ•จ
์„ค์ •ํ•จ
# trap ๋ช…๋ น์–ด์—
๋ช…๋ น์–ด์—
๋ช…๋ น์–ด์—
๋ช…๋ น์–ด์— ์ธ์ž๋ฅผ
์ธ์ž๋ฅผ
์ธ์ž๋ฅผ
์ธ์ž๋ฅผ ์ฃผ์ง€
์ฃผ์ง€
์ฃผ์ง€
์ฃผ์ง€ ์•Š์œผ๋ฉด
์•Š์œผ๋ฉด
์•Š์œผ๋ฉด
์•Š์œผ๋ฉด ์„ค์ •๋œ
์„ค์ •๋œ
์„ค์ •๋œ
์„ค์ •๋œ ๋ชจ๋“ 
๋ชจ๋“ 
๋ชจ๋“ 
๋ชจ๋“ 
ํŠธ๋žฉ์„
ํŠธ๋žฉ์„
ํŠธ๋žฉ์„
ํŠธ๋žฉ์„ ์ถœ๋ ฅํ•จ
์ถœ๋ ฅํ•จ
์ถœ๋ ฅํ•จ
์ถœ๋ ฅํ•จ
75
์‹œ๊ทธ๋„ ํŠธ๋ž˜ํ•‘ ์˜ˆ์ œ
 ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑํ•˜๊ธฐ(trapping)
76
์‹œ๊ทธ๋„ ํŠธ๋ž˜ํ•‘ ์˜ˆ์ œ(Contโ€™d)
 ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ํ•˜๊ธฐ(trapping)
77
ํ•จ์ˆ˜์—์„œ์˜ ํŠธ๋ž˜ํ•‘
 ํ•จ์ˆ˜์—์„œ ์‹œ๊ทธ๋„์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํŠธ๋žฉ์ด ์‚ฌ์šฉ๋œ ์ƒํƒœ์—์„œ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ
์ถœ๋˜๋ฉด ์ „์ฒด ์Šคํฌ๋ฆฝํŠธ์— ์˜ํ–ฅ์„ ์คŒ. ์ฆ‰, ํŠธ๋žฉ์€ ์Šคํฌ๋ฆฝํŠธ์— ์ ์šฉ๋จ
 ๋‹ค์Œ ์˜ˆ์—์„œ ์ธํ„ฐ๋ŸฝํŠธ ํ‚ค์ธ ^C ํ‚ค๊ฐ€ ๋ฌด์‹œ๋˜๋„๋ก ํŠธ๋žฉ์„ ์„ค์ •ํ•จ
 ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑํ•˜๊ธฐ (fun_trap)
78
ํ•จ์ˆ˜์—์„œ์˜ ํŠธ๋ž˜ํ•‘(Contโ€™d)
 ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ํ•˜๊ธฐ (fun_trap)
# trap ๋ช…๋ น์–ด๊ฐ€
๋ช…๋ น์–ด๊ฐ€
๋ช…๋ น์–ด๊ฐ€
๋ช…๋ น์–ด๊ฐ€ ์ธํ„ฐ๋ŸฝํŠธ
์ธํ„ฐ๋ŸฝํŠธ
์ธํ„ฐ๋ŸฝํŠธ
์ธํ„ฐ๋ŸฝํŠธ ํ‚ค
ํ‚ค
ํ‚ค
ํ‚ค(^C)์ธ
์ธ
์ธ
์ธ 2๋ฒˆ
๋ฒˆ
๋ฒˆ
๋ฒˆ ์‹œ๊ทธ๋„์„
์‹œ๊ทธ๋„์„
์‹œ๊ทธ๋„์„
์‹œ๊ทธ๋„์„ ๋ฌด์‹œํ•จ
๋ฌด์‹œํ•จ
๋ฌด์‹œํ•จ
๋ฌด์‹œํ•จ
# ^C ํ‚ค๋ฅผ
ํ‚ค๋ฅผ
ํ‚ค๋ฅผ
ํ‚ค๋ฅผ ๋ˆ„๋ฅด๋ฉด
๋ˆ„๋ฅด๋ฉด
๋ˆ„๋ฅด๋ฉด
๋ˆ„๋ฅด๋ฉด Caught in a trap ๋ฉ”์‹œ์ง€๋ฅผ
๋ฉ”์‹œ์ง€๋ฅผ
๋ฉ”์‹œ์ง€๋ฅผ
๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๊ณ 
์ถœ๋ ฅํ•˜๊ณ 
์ถœ๋ ฅํ•˜๊ณ 
์ถœ๋ ฅํ•˜๊ณ ,
์Šคํฌ๋ฆฝํŠธ๋Š”
์Šคํฌ๋ฆฝํŠธ๋Š”
์Šคํฌ๋ฆฝํŠธ๋Š”
์Šคํฌ๋ฆฝํŠธ๋Š” ์˜์›ํžˆ
์˜์›ํžˆ
์˜์›ํžˆ
์˜์›ํžˆ ์‹คํ–‰๋จ
์‹คํ–‰๋จ
์‹คํ–‰๋จ
์‹คํ–‰๋จ
# ์ฃผ
์ฃผ
์ฃผ
์ฃผ ์Šคํฌ๋ฆฝํŠธ๊ฐ€
์Šคํฌ๋ฆฝํŠธ๊ฐ€
์Šคํฌ๋ฆฝํŠธ๊ฐ€
์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋ฌดํ•œ๋ฃจํ”„์—
๋ฌดํ•œ๋ฃจํ”„์—
๋ฌดํ•œ๋ฃจํ”„์—
๋ฌดํ•œ๋ฃจํ”„์— ๋น ์ง
๋น ์ง
๋น ์ง
๋น ์ง
79
๋””๋ฒ„๊น…
 ์Šคํฌ๋ฆฝํŠธ ๋””๋ฒ„๊น…(debugging)์— ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜
๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ set ๋ช…๋ น์— โ€“x ์˜ต์…˜์„ ์‚ฌ์šฉํ•จ
(๋˜๋Š” bash ๋ช…๋ น์–ด์— โ€“x ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•จ)
 ์ด๋Ÿฌํ•œ ์˜ต์…˜๋“ค์€ ์Šคํฌ๋ฆฝํŠธ์˜ ์ˆ˜ํ–‰ ๊ณผ์ •์„ ์ถ”์ ํ•ด
๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ํ•จ
 ์Šคํฌ๋ฆฝํŠธ ์•ˆ์˜ ๋ช…๋ น์–ด๋“ค์ด ์น˜ํ™˜๋˜๋Š” ๊ณผ์ •์„ ๋จผ์ €
์ถœ๋ ฅํ•˜๊ณ  ๋‚˜์„œ ๋ช…๋ น์–ด์˜ ์‹คํ–‰์ด ์ด๋ฃจ์–ด์ง
 ์Šคํฌ๋ฆฝํŠธ ์•ˆ์˜ ๋ฌธ์žฅ์„ ๋ณด์—ฌ์ค„ ๋•Œ๋Š” ์•ž์— + ๊ธฐํ˜ธ๊ฐ€
๋ถ™์Œ
80
๋””๋ฒ„๊น… ์˜ˆ์ œ
 ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑํ•˜๊ธฐ (todebug)
81
๋””๋ฒ„๊น… ์˜ˆ์ œ(Contโ€™d)
 ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ํ•˜๊ธฐ (todebug)

More Related Content

PDF
Python if loop-function
PPT
Windows Debugging Technique #2
PPTX
Windows reversing study_basic_1
ย 
PDF
[๊ฐ•๋ฆ‰์›์ฃผ๋Œ€ ๋Œ€๊ธฐํ™˜๊ฒฝ๊ณผํ•™๊ณผ] ๋Œ€๊ธฐ๊ณผํ•™์ „์‚ฐ์ž…๋ฌธ ์„ค๋ช…์„œ
PPTX
Lua ๋ฌธ๋ฒ•
PDF
์Šค์นผ๋ผ์™€ ์ŠคํŒŒํฌ ์˜ํ˜ผ์˜ ๋“€์˜ค
PDF
[2012 CodeEngn Conference 07] manGoo - Exploit Writing Technique์˜ ๋ฐœ์ „๊ณผ ์ตœ์‹  ํŠธ๋žœ๋“œ
PPTX
Macro & compilation
Python if loop-function
Windows Debugging Technique #2
Windows reversing study_basic_1
ย 
[๊ฐ•๋ฆ‰์›์ฃผ๋Œ€ ๋Œ€๊ธฐํ™˜๊ฒฝ๊ณผํ•™๊ณผ] ๋Œ€๊ธฐ๊ณผํ•™์ „์‚ฐ์ž…๋ฌธ ์„ค๋ช…์„œ
Lua ๋ฌธ๋ฒ•
์Šค์นผ๋ผ์™€ ์ŠคํŒŒํฌ ์˜ํ˜ผ์˜ ๋“€์˜ค
[2012 CodeEngn Conference 07] manGoo - Exploit Writing Technique์˜ ๋ฐœ์ „๊ณผ ์ตœ์‹  ํŠธ๋žœ๋“œ
Macro & compilation

Similar to Shellscript_doc.pdf (20)

PPTX
ํŒŒ์ด์„  ์‹ค์ „๊ณต๋žต-1
PPT
Erlangแ„‹แ…ณแ†ฏ แ„‹แ…ตแ„‹แ…ญแ†ผแ„’แ…กแ†ซ swap แ„‰แ…ฅแ„‡แ…ฅ
PDF
์ž๋™ํ™”๋œ ์†Œ์Šค ๋ถ„์„, ์ฒ˜๋ฆฌ, ๊ฒ€์ฆ์„ ํ†ตํ•œ ์†Œ์Šค์˜ ๋ถˆํ•„์š”ํ•œ #if - #endif ์ œ๊ฑฐํ•˜๊ธฐ NDC2012
PDF
Perl Script Document
PPTX
Processing ๊ธฐ์ดˆ ์ดํ•ดํ•˜๊ธฐ_20160713
PDF
๋‹น์‹ ์˜ ๋””๋ฒ„๊น…์— ๋‹ˆ์ฝ”๋‹ˆ์ฝ”๋‹ˆ
PDF
ํ•ด์ปค์Šค์ฟจ FTZ ๋ฌธ์ œ ํ’€์ด
PDF
ํ•ด์ปค๊ฐ€ ๋˜๊ณ  ์‹ถ์€ ์ž๋Š” ๋‚˜์—๊ฒŒ... ์ •๋ณด๋ณด์•ˆ ์ž…๋ฌธ๊ณผ ๊ธธ ์ฐพ๊ธฐ
ย 
PDF
07. type system
PDF
Hackerschool FTZ ๋ฌธ์ œ ํ’€์ด
PDF
R ๊ธฐ์ดˆ : R Basics
PPTX
0.javascript๊ธฐ๋ณธ(~3์ผ์ฐจ๋‚ด)
PPTX
Code complete chapter 19, 20 organize
PPTX
Bash-as-a-Interpreter
PPTX
Bash-as-a-Interpreter
ย 
PDF
ํŒŒ์ด์ฌ ๊ธฐ๋ณธ ๋ฌธ๋ฒ•
PPTX
Clojure Chapter.6
PDF
Vs2010 visual cpp_shortcut
PPTX
Whatโ€™s new in c++11
PDF
์ฝ”๋”ฉ์ธ์นดํŽ˜ C&JAVA ๊ธฐ์ดˆ๊ณผ์ • Cํ”„๋กœ๊ทธ๋ž˜๋ฐ(3)
ํŒŒ์ด์„  ์‹ค์ „๊ณต๋žต-1
Erlangแ„‹แ…ณแ†ฏ แ„‹แ…ตแ„‹แ…ญแ†ผแ„’แ…กแ†ซ swap แ„‰แ…ฅแ„‡แ…ฅ
์ž๋™ํ™”๋œ ์†Œ์Šค ๋ถ„์„, ์ฒ˜๋ฆฌ, ๊ฒ€์ฆ์„ ํ†ตํ•œ ์†Œ์Šค์˜ ๋ถˆํ•„์š”ํ•œ #if - #endif ์ œ๊ฑฐํ•˜๊ธฐ NDC2012
Perl Script Document
Processing ๊ธฐ์ดˆ ์ดํ•ดํ•˜๊ธฐ_20160713
๋‹น์‹ ์˜ ๋””๋ฒ„๊น…์— ๋‹ˆ์ฝ”๋‹ˆ์ฝ”๋‹ˆ
ํ•ด์ปค์Šค์ฟจ FTZ ๋ฌธ์ œ ํ’€์ด
ํ•ด์ปค๊ฐ€ ๋˜๊ณ  ์‹ถ์€ ์ž๋Š” ๋‚˜์—๊ฒŒ... ์ •๋ณด๋ณด์•ˆ ์ž…๋ฌธ๊ณผ ๊ธธ ์ฐพ๊ธฐ
ย 
07. type system
Hackerschool FTZ ๋ฌธ์ œ ํ’€์ด
R ๊ธฐ์ดˆ : R Basics
0.javascript๊ธฐ๋ณธ(~3์ผ์ฐจ๋‚ด)
Code complete chapter 19, 20 organize
Bash-as-a-Interpreter
Bash-as-a-Interpreter
ย 
ํŒŒ์ด์ฌ ๊ธฐ๋ณธ ๋ฌธ๋ฒ•
Clojure Chapter.6
Vs2010 visual cpp_shortcut
Whatโ€™s new in c++11
์ฝ”๋”ฉ์ธ์นดํŽ˜ C&JAVA ๊ธฐ์ดˆ๊ณผ์ • Cํ”„๋กœ๊ทธ๋ž˜๋ฐ(3)
Ad

Shellscript_doc.pdf

  • 3. 3 ์‰˜ ์Šคํฌ๋ฆฝํŠธ ๋ช…๋ น์–ด๊ฐ€ ๋ช…๋ นํ–‰์—์„œ๊ฐ€ ์•„๋‹ˆ๋ผ ํŒŒ์ผ ์•ˆ์—์„œ ์‹คํ–‰ ๋  ๋•Œ, ์ด ํŒŒ์ผ์„ ์‰˜ ์Šคํฌ๋ฆฝํŠธ๋ผ ํ•จ ๋Œ€ํ™”ํ˜• ๊ธฐ๋Šฅ์œผ๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š์Œ BASH_ENV ํ™˜๊ฒฝ๋ณ€์ˆ˜์—์„œ ์ง€์ •ํ•œ ํŒŒ์ผ (โ€˜BASH_ENV ํŒŒ์ผโ€™)์„ ์‹คํ–‰ํ•จ (.bashrc) ์ด๋Ÿฌํ•œ BASH_ENV ํŒŒ์ผ์„ ์ฝ์–ด๋“ค์ธ ํ›„, ์‰˜์€ ์Šค ํฌ๋ฆฝํŠธ ์•ˆ์˜ ๋ช…๋ น์–ด๋“ค์„ ์‹คํ–‰
  • 4. 4 ์‰˜ ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ์ ˆ์ฐจ ์ผ๋ฐ˜์ ์œผ๋กœ ํŽธ์ง‘๊ธฐ์—์„œ ์ž‘์„ฑ(vi, gedit ๋“ฑ) ์ฃผ์„(โ€˜#โ€™ ๊ธฐํ˜ธ)๊ณผ ๋ช…๋ น์–ด๋กœ ๊ตฌ์„ฑ ์ฒซ ๋ฒˆ์งธ ํ–‰ ๋ฐฐ์‹œ ์‰˜ ํ”„๋กœ๊ทธ๋žจ ์œ ๋‹‰์Šค ๋ช…๋ น์–ด, ๋ณธ ์‰˜ ๋ช…๋ น์–ด, ํ”„๋กœ๊ทธ๋žจ ๊ตฌ์กฐ, ์ฃผ์„ ๋“ฑ์œผ๋กœ ์ด๋ฃจ์–ด ์ง #!/bin/bash #!/bin/bash #!/bin/bash #!/bin/bash : : : : ํ•ญ์ƒ ํ•ญ์ƒ ํ•ญ์ƒ ํ•ญ์ƒ ์Šคํฌ๋ฆฝํŠธ์˜ ์Šคํฌ๋ฆฝํŠธ์˜ ์Šคํฌ๋ฆฝํŠธ์˜ ์Šคํฌ๋ฆฝํŠธ์˜ ์ฒซ ์ฒซ ์ฒซ ์ฒซ ํ–‰์— ํ–‰์— ํ–‰์— ํ–‰์— ๋‚˜์™€์•ผ ๋‚˜์™€์•ผ ๋‚˜์™€์•ผ ๋‚˜์™€์•ผ ํ•จ ํ•จ ํ•จ ํ•จ : : : : ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ํ–‰ํ•  ์ˆ˜ํ–‰ํ•  ์ˆ˜ํ–‰ํ•  ๋•Œ ๋•Œ ๋•Œ ๋•Œ ์‚ฌ์šฉํ•  ์‚ฌ์šฉํ•  ์‚ฌ์šฉํ•  ์‚ฌ์šฉํ•  ์‰˜์˜ ์‰˜์˜ ์‰˜์˜ ์‰˜์˜ ์ด๋ฆ„์„ ์ด๋ฆ„์„ ์ด๋ฆ„์„ ์ด๋ฆ„์„ ์ง€์ • ์ง€์ • ์ง€์ • ์ง€์ • : : : : ๊ธฐํ˜ธ ๊ธฐํ˜ธ ๊ธฐํ˜ธ ๊ธฐํ˜ธ โ€˜#! #! #! #!โ€™ ๋Š” ๋Š” ๋Š” ๋Š” ๋งค์ง๋„˜๋ฒ„๋ผ ๋งค์ง๋„˜๋ฒ„๋ผ ๋งค์ง๋„˜๋ฒ„๋ผ ๋งค์ง๋„˜๋ฒ„๋ผ ๋ถˆ๋ฆผ ๋ถˆ๋ฆผ ๋ถˆ๋ฆผ ๋ถˆ๋ฆผ. . . . ์ปค๋„์ด ์ปค๋„์ด ์ปค๋„์ด ์ปค๋„์ด ์‹คํ–‰ ์‹คํ–‰ ์‹คํ–‰ ์‹คํ–‰ ํ”„๋กœ๊ทธ ํ”„๋กœ๊ทธ ํ”„๋กœ๊ทธ ํ”„๋กœ๊ทธ ๋žจ์œผ๋กœ ๋žจ์œผ๋กœ ๋žจ์œผ๋กœ ๋žจ์œผ๋กœ ์ธ์‹ํ•ด์•ผ ์ธ์‹ํ•ด์•ผ ์ธ์‹ํ•ด์•ผ ์ธ์‹ํ•ด์•ผ ํ•˜๋Š”์ง€์˜ ํ•˜๋Š”์ง€์˜ ํ•˜๋Š”์ง€์˜ ํ•˜๋Š”์ง€์˜ ์—ฌ๋ถ€๋ฅผ ์—ฌ๋ถ€๋ฅผ ์—ฌ๋ถ€๋ฅผ ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋ƒ„ ๋‚˜ํƒ€๋ƒ„ ๋‚˜ํƒ€๋ƒ„ ๋‚˜ํƒ€๋ƒ„
  • 5. 5 ์‰˜ ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰๊ถŒํ•œ ๋ถ€์—ฌ ํŒŒ์ผ ์ƒ์„ฑ ํ›„ ์ ์ ˆํ•œ ๊ถŒํ•œ์ด ์ฃผ์–ด์ ธ์•ผ ์‰˜ ์Šคํฌ๋ฆฝ ํŠธ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•จ
  • 6. 6 ์‰˜ ์Šคํฌ๋ฆฝํŠธ ์ˆ˜ํ–‰ ๊ฐ„๋‹จํ•œ์˜ˆ์ œ ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑํ•˜๊ธฐ (greetings)
  • 7. 7 ์‰˜ ์Šคํฌ๋ฆฝํŠธ ์ˆ˜ํ–‰ ๊ฐ„๋‹จํ•œ์˜ˆ์ œ(Contโ€™d) ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ํ•˜๊ธฐ (greetings)
  • 8. 8 ๋‚ด์žฅ๋ช…๋ น์–ด โ€˜readโ€™ ํŒŒ์ผ์ด๋‚˜ ํ„ฐ๋ฏธ๋„๋กœ๋ถ€ํ„ฐ ์ž…๋ ฅ์„ ์ฝ์–ด์˜ค๊ธฐ ์œ„ํ•จ ๊ฐœํ–‰๋ฌธ์ž(n)๊ฐ€ ๋‚˜ํƒ€๋‚  ๋•Œ ๊นŒ์ง€ ํ–‰์„ ์ฝ์–ด๋“ค์ž„ ์‚ฌ์šฉ์ž๊ฐ€ ์—”ํ„ฐํ‚ค๋ฅผ ์ž…๋ ฅํ•  ๋•Œ๊นŒ์ง€ ํ”„๋กœ๊ทธ๋žจ์„ ์ผ์‹œ ์ค‘์ง€ ์‹œํ‚ค๋Š” ๋ชฉ์ ์œผ๋กœ๋„ ์‚ฌ์šฉํ•จ ์ž…๋ ฅ์— ์ž…๋ ฅ์— ์ž…๋ ฅ์— ์ž…๋ ฅ์— ์—ญ์Šฌ๋ž˜์‹œ๋ฅผ ์—ญ์Šฌ๋ž˜์‹œ๋ฅผ ์—ญ์Šฌ๋ž˜์‹œ๋ฅผ ์—ญ์Šฌ๋ž˜์‹œ๋ฅผ ์“ธ ์“ธ ์“ธ ์“ธ ์ˆ˜ ์ˆ˜ ์ˆ˜ ์ˆ˜ ์žˆ๊ฒŒ ์žˆ๊ฒŒ ์žˆ๊ฒŒ ์žˆ๊ฒŒ ํ—ˆ์šฉํ•จ ํ—ˆ์šฉํ•จ ํ—ˆ์šฉํ•จ ํ—ˆ์šฉํ•จ read โ€“r line Prompt๋ฅผ ๋ฅผ ๋ฅผ ๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ์ถœ๋ ฅํ•˜๊ณ  ์ถœ๋ ฅํ•˜๊ณ  ์ถœ๋ ฅํ•˜๊ณ  ์ž…๋ ฅ์„ ์ž…๋ ฅ์„ ์ž…๋ ฅ์„ ์ž…๋ ฅ์„ ๊ธฐ๋‹ค๋ฆผ ๊ธฐ๋‹ค๋ฆผ ๊ธฐ๋‹ค๋ฆผ ๊ธฐ๋‹ค๋ฆผ. ์ž…๋ ฅ๋‚ด์šฉ์€ ์ž…๋ ฅ๋‚ด์šฉ์€ ์ž…๋ ฅ๋‚ด์šฉ์€ ์ž…๋ ฅ๋‚ด์šฉ์€ REPLY๋ณ€์ˆ˜์— ๋ณ€์ˆ˜์— ๋ณ€์ˆ˜์— ๋ณ€์ˆ˜์— ์ €์žฅ ์ €์žฅ ์ €์žฅ ์ €์žฅ read โ€“p prompt ์ž…๋ ฅ ์ž…๋ ฅ ์ž…๋ ฅ ์ž…๋ ฅ ํ–‰์—์„œ ํ–‰์—์„œ ํ–‰์—์„œ ํ–‰์—์„œ ๋ช…๋ นํ–‰ ๋ช…๋ นํ–‰ ๋ช…๋ นํ–‰ ๋ช…๋ นํ–‰ ํŽธ์ง‘์„ ํŽธ์ง‘์„ ํŽธ์ง‘์„ ํŽธ์ง‘์„ ์‚ฌ์šฉํ•จ ์‚ฌ์šฉํ•จ ์‚ฌ์šฉํ•จ ์‚ฌ์šฉํ•จ (๋ช…๋ นํ–‰ ๋ช…๋ นํ–‰ ๋ช…๋ นํ–‰ ๋ช…๋ นํ–‰ ํŽธ์ง‘๊ธฐ๊ฐ€ ํŽธ์ง‘๊ธฐ๊ฐ€ ํŽธ์ง‘๊ธฐ๊ฐ€ ํŽธ์ง‘๊ธฐ๊ฐ€ vi๋ผ๋ฉด ๋ผ๋ฉด ๋ผ๋ฉด ๋ผ๋ฉด ์ž…๋ ฅํ–‰์—์„œ ์ž…๋ ฅํ–‰์—์„œ ์ž…๋ ฅํ–‰์—์„œ ์ž…๋ ฅํ–‰์—์„œ vi ํ‚ค๋ฅผ ํ‚ค๋ฅผ ํ‚ค๋ฅผ ํ‚ค๋ฅผ ์ด์šฉํ•˜์—ฌ ์ด์šฉํ•˜์—ฌ ์ด์šฉํ•˜์—ฌ ์ด์šฉํ•˜์—ฌ ํŽธ์ง‘ ํŽธ์ง‘ ํŽธ์ง‘ ํŽธ์ง‘ ๊ฐ€๋Šฅ ๊ฐ€๋Šฅ ๊ฐ€๋Šฅ ๊ฐ€๋Šฅ) read โ€“e ์ž…๋ ฅ๋ฐ›์€ ์ž…๋ ฅ๋ฐ›์€ ์ž…๋ ฅ๋ฐ›์€ ์ž…๋ ฅ๋ฐ›์€ ๋‹จ์–ด ๋‹จ์–ด ๋‹จ์–ด ๋‹จ์–ด ๋ชฉ๋ก์„ ๋ชฉ๋ก์„ ๋ชฉ๋ก์„ ๋ชฉ๋ก์„ arrayname์ด๋ผ๋Š” ์ด๋ผ๋Š” ์ด๋ผ๋Š” ์ด๋ผ๋Š” ๋ฐฐ์—ด์— ๋ฐฐ์—ด์— ๋ฐฐ์—ด์— ๋ฐฐ์—ด์— ์ €์žฅ ์ €์žฅ ์ €์žฅ ์ €์žฅ read โ€“a arrayname ์ €์žฅํ•  ์ €์žฅํ•  ์ €์žฅํ•  ์ €์žฅํ•  ํŠน๋ณ„ํ•œ ํŠน๋ณ„ํ•œ ํŠน๋ณ„ํ•œ ํŠน๋ณ„ํ•œ ์ด๋ฆ„์ด ์ด๋ฆ„์ด ์ด๋ฆ„์ด ์ด๋ฆ„์ด ์—†์œผ๋ฉด ์—†์œผ๋ฉด ์—†์œผ๋ฉด ์—†์œผ๋ฉด read๋Š” ๋Š” ๋Š” ๋Š” REPLY๋ผ๋Š” ๋ผ๋Š” ๋ผ๋Š” ๋ผ๋Š” ํŠน์ˆ˜ ํŠน์ˆ˜ ํŠน์ˆ˜ ํŠน์ˆ˜ ๋‚ด์žฅ๋ณ€์ˆ˜์— ๋‚ด์žฅ๋ณ€์ˆ˜์— ๋‚ด์žฅ๋ณ€์ˆ˜์— ๋‚ด์žฅ๋ณ€์ˆ˜์— ๊ฐ’์„ ๊ฐ’์„ ๊ฐ’์„ ๊ฐ’์„ ์ €์žฅํ•จ ์ €์žฅํ•จ ์ €์žฅํ•จ ์ €์žฅํ•จ read ํ‘œ์ค€์ž…๋ ฅ์œผ๋กœ๋ถ€ํ„ฐ ํ‘œ์ค€์ž…๋ ฅ์œผ๋กœ๋ถ€ํ„ฐ ํ‘œ์ค€์ž…๋ ฅ์œผ๋กœ๋ถ€ํ„ฐ ํ‘œ์ค€์ž…๋ ฅ์œผ๋กœ๋ถ€ํ„ฐ ํ•œ ํ•œ ํ•œ ํ•œ ํ–‰์„ ํ–‰์„ ํ–‰์„ ํ–‰์„ ์ฝ์–ด์„œ ์ฝ์–ด์„œ ์ฝ์–ด์„œ ์ฝ์–ด์„œ ๊ทธ์ค‘ ๊ทธ์ค‘ ๊ทธ์ค‘ ๊ทธ์ค‘ ์ฒซ ์ฒซ ์ฒซ ์ฒซ ๋‹จ์–ด๋Š” ๋‹จ์–ด๋Š” ๋‹จ์–ด๋Š” ๋‹จ์–ด๋Š” ๋ณ€์ˆ˜ ๋ณ€์ˆ˜ ๋ณ€์ˆ˜ ๋ณ€์ˆ˜ first์— ์— ์— ์— ์ €์žฅํ•˜๊ณ  ์ €์žฅํ•˜๊ณ  ์ €์žฅํ•˜๊ณ  ์ €์žฅํ•˜๊ณ  ๋‚˜๋จธ์ง€๋Š” ๋‚˜๋จธ์ง€๋Š” ๋‚˜๋จธ์ง€๋Š” ๋‚˜๋จธ์ง€๋Š” last์— ์— ์— ์— ์ €์žฅํ•จ ์ €์žฅํ•จ ์ €์žฅํ•จ ์ €์žฅํ•จ read first last ํ‘œ์ค€์ž…๋ ฅ์œผ๋กœ๋ถ€ํ„ฐ ํ‘œ์ค€์ž…๋ ฅ์œผ๋กœ๋ถ€ํ„ฐ ํ‘œ์ค€์ž…๋ ฅ์œผ๋กœ๋ถ€ํ„ฐ ํ‘œ์ค€์ž…๋ ฅ์œผ๋กœ๋ถ€ํ„ฐ ํ•œ ํ•œ ํ•œ ํ•œ ํ–‰์„ ํ–‰์„ ํ–‰์„ ํ–‰์„ ์ฝ์–ด์„œ ์ฝ์–ด์„œ ์ฝ์–ด์„œ ์ฝ์–ด์„œ ๋ณ€์ˆ˜ ๋ณ€์ˆ˜ ๋ณ€์ˆ˜ ๋ณ€์ˆ˜ answer์— ์— ์— ์— ์ €์žฅํ•จ ์ €์žฅํ•จ ์ €์žฅํ•จ ์ €์žฅํ•จ read answer ์˜๋ฏธ ์˜๋ฏธ ์˜๋ฏธ ์˜๋ฏธ ํ˜•์‹ ํ˜•์‹ ํ˜•์‹ ํ˜•์‹
  • 9. 9 ๋‚ด์žฅ๋ช…๋ น์–ด โ€˜readโ€™ ์˜ˆ์ œ ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑํ•˜๊ธฐ (nosy)
  • 10. 10 ๋‚ด์žฅ๋ช…๋ น์–ด โ€˜readโ€™ ์˜ˆ์ œ(Contโ€™d) ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ํ•˜๊ธฐ (nosy)
  • 11. 11 ์‚ฐ์ˆ ์—ฐ์‚ฐ(์ •์ˆ˜ํƒ€์ž…๊ณ„์‚ฐ) โ€˜declareโ€™ ๋ช…๋ น์–ด (declare โ€“i ์‚ฌ์šฉ) # declare # declare # declare # declare โ€“i i i i ๋ช…๋ น์–ด๋ฅผ ๋ช…๋ น์–ด๋ฅผ ๋ช…๋ น์–ด๋ฅผ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉํ•˜์—ฌ num num num num ๋ณ€์ˆ˜๋ฅผ ๋ณ€์ˆ˜๋ฅผ ๋ณ€์ˆ˜๋ฅผ ๋ณ€์ˆ˜๋ฅผ ์ •์ˆ˜ ์ •์ˆ˜ ์ •์ˆ˜ ์ •์ˆ˜ ํƒ€์ž…์œผ๋กœ ํƒ€์ž…์œผ๋กœ ํƒ€์ž…์œผ๋กœ ํƒ€์ž…์œผ๋กœ ์„ ์–ธ ์„ ์–ธ ์„ ์–ธ ์„ ์–ธ # # # # ๋ฌธ์ž์—ด ๋ฌธ์ž์—ด ๋ฌธ์ž์—ด ๋ฌธ์ž์—ด hello hello hello hello๋ฅผ ๋ฅผ ๋ฅผ ๋ฅผ ์ •์ˆ˜ํƒ€์ž… ์ •์ˆ˜ํƒ€์ž… ์ •์ˆ˜ํƒ€์ž… ์ •์ˆ˜ํƒ€์ž… ๋ณ€์ˆ˜ ๋ณ€์ˆ˜ ๋ณ€์ˆ˜ ๋ณ€์ˆ˜ num num num num์— ์— ์— ์— ๋Œ€์ž…ํ•˜๋ ค๊ณ  ๋Œ€์ž…ํ•˜๋ ค๊ณ  ๋Œ€์ž…ํ•˜๋ ค๊ณ  ๋Œ€์ž…ํ•˜๋ ค๊ณ  ํ•˜๋ฉด ํ•˜๋ฉด ํ•˜๋ฉด ํ•˜๋ฉด ๋Œ€์‹  ๋Œ€์‹  ๋Œ€์‹  ๋Œ€์‹  0 0 0 0์˜ ์˜ ์˜ ์˜ ๊ฐ’์ด ๊ฐ’์ด ๊ฐ’์ด ๊ฐ’์ด num num num num ๋ณ€์ˆ˜์— ๋ณ€์ˆ˜์— ๋ณ€์ˆ˜์— ๋ณ€์ˆ˜์— ์ง€์ •๋จ ์ง€์ •๋จ ์ง€์ •๋จ ์ง€์ •๋จ # # # # ์ŠคํŽ˜์ด์Šค๋Š” ์ŠคํŽ˜์ด์Šค๋Š” ์ŠคํŽ˜์ด์Šค๋Š” ์ŠคํŽ˜์ด์Šค๋Š” ์‚ฌ์šฉํ•˜์ง€ ์‚ฌ์šฉํ•˜์ง€ ์‚ฌ์šฉํ•˜์ง€ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์•Š๊ฑฐ๋‚˜ ์•Š๊ฑฐ๋‚˜ ์•Š๊ฑฐ๋‚˜ ๋”ฐ์˜ดํ‘œ๋กœ ๋”ฐ์˜ดํ‘œ๋กœ ๋”ฐ์˜ดํ‘œ๋กœ ๋”ฐ์˜ดํ‘œ๋กœ ๋ฌถ์–ด์•ผ ๋ฌถ์–ด์•ผ ๋ฌถ์–ด์•ผ ๋ฌถ์–ด์•ผ ํ•จ ํ•จ ํ•จ ํ•จ # # # # ์ŠคํŽ˜์ด์Šค๋ฅผ ์ŠคํŽ˜์ด์Šค๋ฅผ ์ŠคํŽ˜์ด์Šค๋ฅผ ์ŠคํŽ˜์ด์Šค๋ฅผ ๋”ฐ์˜ดํ‘œ๋กœ ๋”ฐ์˜ดํ‘œ๋กœ ๋”ฐ์˜ดํ‘œ๋กœ ๋”ฐ์˜ดํ‘œ๋กœ ๋ฌถ์—ˆ์œผ๋ฏ€๋กœ ๋ฌถ์—ˆ์œผ๋ฏ€๋กœ ๋ฌถ์—ˆ์œผ๋ฏ€๋กœ ๋ฌถ์—ˆ์œผ๋ฏ€๋กœ ๊ณฑ์…ˆ์ด ๊ณฑ์…ˆ์ด ๊ณฑ์…ˆ์ด ๊ณฑ์…ˆ์ด ์ˆ˜ํ–‰๋จ ์ˆ˜ํ–‰๋จ ์ˆ˜ํ–‰๋จ ์ˆ˜ํ–‰๋จ # # # # ๋ณ€์ˆ˜๊ฐ€ ๋ณ€์ˆ˜๊ฐ€ ๋ณ€์ˆ˜๊ฐ€ ๋ณ€์ˆ˜๊ฐ€ ์ •์ˆ˜ํƒ€์ž…์ด๋ฏ€๋กœ ์ •์ˆ˜ํƒ€์ž…์ด๋ฏ€๋กœ ์ •์ˆ˜ํƒ€์ž…์ด๋ฏ€๋กœ ์ •์ˆ˜ํƒ€์ž…์ด๋ฏ€๋กœ ๋ถ€๋™์†Œ์ˆ˜์ ์„ ๋ถ€๋™์†Œ์ˆ˜์ ์„ ๋ถ€๋™์†Œ์ˆ˜์ ์„ ๋ถ€๋™์†Œ์ˆ˜์ ์„ ์ง€์ •ํ•˜๋ฉด ์ง€์ •ํ•˜๋ฉด ์ง€์ •ํ•˜๋ฉด ์ง€์ •ํ•˜๋ฉด ๊ตฌ๋ฌธ์—๋Ÿฌ๋ฐœ์ƒ ๊ตฌ๋ฌธ์—๋Ÿฌ๋ฐœ์ƒ ๊ตฌ๋ฌธ์—๋Ÿฌ๋ฐœ์ƒ ๊ตฌ๋ฌธ์—๋Ÿฌ๋ฐœ์ƒ
  • 12. 12 ์‚ฐ์ˆ ์—ฐ์‚ฐ(์ •์ˆ˜ํƒ€์ž…๊ณ„์‚ฐ) โ€˜letโ€™ ๋ช…๋ น์–ด # i # i # i # i ๋ณ€์ˆ˜์— ๋ณ€์ˆ˜์— ๋ณ€์ˆ˜์— ๋ณ€์ˆ˜์— 5 5 5 5๋ฅผ ๋ฅผ ๋ฅผ ๋ฅผ ์ €์žฅ ์ €์žฅ ์ €์žฅ ์ €์žฅ # let # let # let # let๋ช…๋ น์–ด๊ฐ€ ๋ช…๋ น์–ด๊ฐ€ ๋ช…๋ น์–ด๊ฐ€ ๋ช…๋ น์–ด๊ฐ€ i i i i ๋ณ€์ˆ˜์— ๋ณ€์ˆ˜์— ๋ณ€์ˆ˜์— ๋ณ€์ˆ˜์— 1 1 1 1์„ ์„ ์„ ์„ ๋”ํ•จ ๋”ํ•จ ๋”ํ•จ ๋”ํ•จ. . . . ์‚ฐ์ˆ ์—ฐ์‚ฐ์—์„œ๋Š” ์‚ฐ์ˆ ์—ฐ์‚ฐ์—์„œ๋Š” ์‚ฐ์ˆ ์—ฐ์‚ฐ์—์„œ๋Š” ์‚ฐ์ˆ ์—ฐ์‚ฐ์—์„œ๋Š” ๋ณ€์ˆ˜ ๋ณ€์ˆ˜ ๋ณ€์ˆ˜ ๋ณ€์ˆ˜ ์น˜ํ™˜์„ ์น˜ํ™˜์„ ์น˜ํ™˜์„ ์น˜ํ™˜์„ ์œ„ํ•ด ์œ„ํ•ด ์œ„ํ•ด ์œ„ํ•ด โ€˜$ $ $ $โ€™๋ฅผ ๋ฅผ ๋ฅผ ๋ฅผ ์‚ฌ์šฉํ•  ์‚ฌ์šฉํ•  ์‚ฌ์šฉํ•  ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ํ•„์š”๊ฐ€ ํ•„์š”๊ฐ€ ํ•„์š”๊ฐ€ ์—†์Œ ์—†์Œ ์—†์Œ ์—†์Œ # # # # ์ธ์ž๋“ค์— ์ธ์ž๋“ค์— ์ธ์ž๋“ค์— ์ธ์ž๋“ค์— ์ŠคํŽ˜์ด์Šค๊ฐ€ ์ŠคํŽ˜์ด์Šค๊ฐ€ ์ŠคํŽ˜์ด์Šค๊ฐ€ ์ŠคํŽ˜์ด์Šค๊ฐ€ ์žˆ์œผ๋ฉด ์žˆ์œผ๋ฉด ์žˆ์œผ๋ฉด ์žˆ์œผ๋ฉด ๋”ฐ์˜ดํ‘œ๋ฅผ ๋”ฐ์˜ดํ‘œ๋ฅผ ๋”ฐ์˜ดํ‘œ๋ฅผ ๋”ฐ์˜ดํ‘œ๋ฅผ ์‚ฌ์šฉ ์‚ฌ์šฉ ์‚ฌ์šฉ ์‚ฌ์šฉ # # # # ๋ณตํ•ฉ์—ฐ์‚ฐ์ž ๋ณตํ•ฉ์—ฐ์‚ฐ์ž ๋ณตํ•ฉ์—ฐ์‚ฐ์ž ๋ณตํ•ฉ์—ฐ์‚ฐ์ž += += += +=๋ฅผ ๋ฅผ ๋ฅผ ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉํ•˜์—ฌ i i i i ๋ณ€์ˆ˜์— ๋ณ€์ˆ˜์— ๋ณ€์ˆ˜์— ๋ณ€์ˆ˜์— 1 1 1 1์„ ์„ ์„ ์„ ๋”ํ•จ ๋”ํ•จ ๋”ํ•จ ๋”ํ•จ # let # let # let # let๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋Œ€์‹  ๋Œ€์‹  ๋Œ€์‹  ๋Œ€์‹  (( )) (( )) (( )) (( )) ๋ช…๋ น์–ด๋ฅผ ๋ช…๋ น์–ด๋ฅผ ๋ช…๋ น์–ด๋ฅผ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ• ์ˆ˜ ์‚ฌ์šฉํ• ์ˆ˜ ์‚ฌ์šฉํ• ์ˆ˜ ์‚ฌ์šฉํ• ์ˆ˜ ์žˆ์Œ ์žˆ์Œ ์žˆ์Œ ์žˆ์Œ
  • 13. 13 ์‚ฐ์ˆ ์—ฐ์‚ฐ(๋ถ€๋™์†Œ์ˆ˜์ ํƒ€์ž…๊ณ„์‚ฐ) ๋ฐฐ์‹œ ์‰˜์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ •์ˆ˜ํƒ€์ž…๋งŒ ๊ณ„์‚ฐ bc, awk ๋“ฑ์˜ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณต์žกํ•œ ๊ณ„์‚ฐ ์ˆ˜ํ–‰
  • 14. 14 ์œ„์น˜ ์ธ์ž ์Šคํฌ๋ฆฝํŠธ ์ด๋ฆ„ ๋‹ค์Œ์— ๊ณต๋ฐฑ ๋ฌธ์ž๋กœ ๊ตฌ๋ถ„๋œ ๊ฐ ๋‹จ์–ด๋ฅผ ์ธ์ž ๋ผ ๋ถ€๋ฆ„ ๋ช…๋ นํ–‰์—์„œ ์Šคํฌ๋ฆฝํŠธ์— ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ๋„˜๊ฒจ์ค„ ์ˆ˜ ์žˆ์Œ ๋ช…๋ น์–ด โ€˜setโ€™์„ ์จ์„œ ์„ค์ • ๋˜๋Š” ์žฌ์„ค์ •ํ•  ์ˆ˜ ์žˆ๊ณ  ์ด๋•Œ ์ด ์ „ ์„ค์ • ๊ฐ’์€ ์ง€์›Œ์ง โ€œ$1โ€ โ€œ$2โ€ โ€œ$3โ€์œผ๋กœ ์œผ๋กœ ์œผ๋กœ ์œผ๋กœ ํ‰๊ฐ€ ํ‰๊ฐ€ ํ‰๊ฐ€ ํ‰๊ฐ€ โ€œ$@โ€ โ€œ$1 $2 $3โ€์œผ๋กœ ์œผ๋กœ ์œผ๋กœ ์œผ๋กœ ํ‰๊ฐ€ ํ‰๊ฐ€ ํ‰๊ฐ€ ํ‰๊ฐ€ โ€œ$*โ€ ํฐ๋”ฐ์˜ดํ‘œ๋ฅผ ํฐ๋”ฐ์˜ดํ‘œ๋ฅผ ํฐ๋”ฐ์˜ดํ‘œ๋ฅผ ํฐ๋”ฐ์˜ดํ‘œ๋ฅผ ์‚ฌ์šฉํ•˜์˜€์„ ์‚ฌ์šฉํ•˜์˜€์„ ์‚ฌ์šฉํ•˜์˜€์„ ์‚ฌ์šฉํ•˜์˜€์„ ๋•Œ๋ฅผ ๋•Œ๋ฅผ ๋•Œ๋ฅผ ๋•Œ๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ์ œ์™ธํ•˜๊ณ ๋Š” ์ œ์™ธํ•˜๊ณ ๋Š” ์ œ์™ธํ•˜๊ณ ๋Š” $*์™€ ์™€ ์™€ ์™€ ๋™์ผํ•œ ๋™์ผํ•œ ๋™์ผํ•œ ๋™์ผํ•œ ์˜๋ฏธ ์˜๋ฏธ ์˜๋ฏธ ์˜๋ฏธ $@ ๋ชจ๋“  ๋ชจ๋“  ๋ชจ๋“  ๋ชจ๋“  ์œ„์น˜ ์œ„์น˜ ์œ„์น˜ ์œ„์น˜ ์ธ์ž๋ฅผ ์ธ์ž๋ฅผ ์ธ์ž๋ฅผ ์ธ์ž๋ฅผ ํ‰๊ฐ€ ํ‰๊ฐ€ ํ‰๊ฐ€ ํ‰๊ฐ€ $* ์œ„์น˜ ์œ„์น˜ ์œ„์น˜ ์œ„์น˜ ์ธ์ž์˜ ์ธ์ž์˜ ์ธ์ž์˜ ์ธ์ž์˜ ์ด ์ด ์ด ์ด ๊ฐœ์ˆ˜๋ฅผ ๊ฐœ์ˆ˜๋ฅผ ๊ฐœ์ˆ˜๋ฅผ ๊ฐœ์ˆ˜๋ฅผ ํ‰๊ฐ€ ํ‰๊ฐ€ ํ‰๊ฐ€ ํ‰๊ฐ€ $# 10๋ฒˆ ๋ฒˆ ๋ฒˆ ๋ฒˆ ์œ„์น˜ ์œ„์น˜ ์œ„์น˜ ์œ„์น˜ ์ธ์ž ์ธ์ž ์ธ์ž ์ธ์ž ${10} 1๋ฒˆ๋ถ€ํ„ฐ ๋ฒˆ๋ถ€ํ„ฐ ๋ฒˆ๋ถ€ํ„ฐ ๋ฒˆ๋ถ€ํ„ฐ 9๋ฒˆ๊นŒ์ง€์˜ ๋ฒˆ๊นŒ์ง€์˜ ๋ฒˆ๊นŒ์ง€์˜ ๋ฒˆ๊นŒ์ง€์˜ ์œ„์น˜ ์œ„์น˜ ์œ„์น˜ ์œ„์น˜ ์ธ์ž ์ธ์ž ์ธ์ž ์ธ์ž $1-$9 ํ˜„์žฌ ํ˜„์žฌ ํ˜„์žฌ ํ˜„์žฌ ์‰˜ ์‰˜ ์‰˜ ์‰˜ ์Šคํฌ๋ฆฝํŠธ ์Šคํฌ๋ฆฝํŠธ ์Šคํฌ๋ฆฝํŠธ ์Šคํฌ๋ฆฝํŠธ ์ด๋ฆ„ ์ด๋ฆ„ ์ด๋ฆ„ ์ด๋ฆ„ $0 ์˜๋ฏธ ์˜๋ฏธ ์˜๋ฏธ ์˜๋ฏธ ์œ„์น˜์ธ์ž ์œ„์น˜์ธ์ž ์œ„์น˜์ธ์ž ์œ„์น˜์ธ์ž
  • 15. 15 ์œ„์น˜ ์ธ์ž ์˜ˆ์ œ ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑํ•˜๊ธฐ (greetings2)
  • 16. 16 ์œ„์น˜ ์ธ์ž ์˜ˆ์ œ(contโ€™d) ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ํ•˜๊ธฐ (greetings2)
  • 17. 17 โ€˜setโ€™ ๋ช…๋ น์–ด์™€ ์œ„์น˜ ์ธ์ž ์˜ˆ์ œ ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑํ•˜๊ธฐ (args)
  • 18. 18 โ€˜setโ€™ ๋ช…๋ น์–ด์™€ ์œ„์น˜ ์ธ์ž ์˜ˆ์ œ(Contโ€™d) ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ํ•˜๊ธฐ (args)
  • 19. 19 ๋‚ด์žฅ๋ช…๋ น์–ด โ€˜testโ€™ ํ‘œํ˜„์‹์˜ ํ‰๊ฐ€์— ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ # # # # grep grep grep grep๋ช…๋ น์–ด์˜ ๋ช…๋ น์–ด์˜ ๋ช…๋ น์–ด์˜ ๋ช…๋ น์–ด์˜ ์ข…๋ฃŒ์ƒํƒœ๊ฐ€ ์ข…๋ฃŒ์ƒํƒœ๊ฐ€ ์ข…๋ฃŒ์ƒํƒœ๊ฐ€ ์ข…๋ฃŒ์ƒํƒœ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์„ฑ๊ณต์ ์œผ๋กœ ์„ฑ๊ณต์ ์œผ๋กœ ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰ํ–ˆ์œผ๋ฏ€๋กœ ์ˆ˜ํ–‰ํ–ˆ์œผ๋ฏ€๋กœ ์ˆ˜ํ–‰ํ–ˆ์œผ๋ฏ€๋กœ ์ˆ˜ํ–‰ํ–ˆ์œผ๋ฏ€๋กœ 0 0 0 0์ด ์ด ์ด ์ด ๋œ๋‹ค ๋œ๋‹ค ๋œ๋‹ค ๋œ๋‹ค # test # test # test # test๋ช…๋ น์–ด๋Š” ๋ช…๋ น์–ด๋Š” ๋ช…๋ น์–ด๋Š” ๋ช…๋ น์–ด๋Š” ๋ฌธ์ž์—ด์ด๋‚˜ ๋ฌธ์ž์—ด์ด๋‚˜ ๋ฌธ์ž์—ด์ด๋‚˜ ๋ฌธ์ž์—ด์ด๋‚˜ ์ˆซ์ž๋ฅผ ์ˆซ์ž๋ฅผ ์ˆซ์ž๋ฅผ ์ˆซ์ž๋ฅผ ํ‰๊ฐ€ํ•˜๊ฑฐ๋‚˜ ํ‰๊ฐ€ํ•˜๊ฑฐ๋‚˜ ํ‰๊ฐ€ํ•˜๊ฑฐ๋‚˜ ํ‰๊ฐ€ํ•˜๊ฑฐ๋‚˜, , , , ํŒŒ์ผ์„ ํŒŒ์ผ์„ ํŒŒ์ผ์„ ํŒŒ์ผ์„ ๊ฒ€์‚ฌํ•˜๊ธฐ ๊ฒ€์‚ฌํ•˜๊ธฐ ๊ฒ€์‚ฌํ•˜๊ธฐ ๊ฒ€์‚ฌํ•˜๊ธฐ ์œ„ํ•ด ์œ„ํ•ด ์œ„ํ•ด ์œ„ํ•ด ์‚ฌ์šฉ ์‚ฌ์šฉ ์‚ฌ์šฉ ์‚ฌ์šฉ. 0 . 0 . 0 . 0์„ ์„ ์„ ์„ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋ฐ˜ํ™˜ํ•˜๋ฉด ํ‘œํ˜„์‹์„ ํ‘œํ˜„์‹์„ ํ‘œํ˜„์‹์„ ํ‘œํ˜„์‹์„ ์ฐธ์œผ๋กœ ์ฐธ์œผ๋กœ ์ฐธ์œผ๋กœ ์ฐธ์œผ๋กœ ํ‰๊ฐ€ ํ‰๊ฐ€ ํ‰๊ฐ€ ํ‰๊ฐ€, 1 , 1 , 1 , 1์ด๋ฉด ์ด๋ฉด ์ด๋ฉด ์ด๋ฉด ๊ฑฐ์ง“์ž„ ๊ฑฐ์ง“์ž„ ๊ฑฐ์ง“์ž„ ๊ฑฐ์ง“์ž„. . . . ๋“ฑํ˜ธ ๋“ฑํ˜ธ ๋“ฑํ˜ธ ๋“ฑํ˜ธ(=) (=) (=) (=)๊ธฐํ˜ธ ๊ธฐํ˜ธ ๊ธฐํ˜ธ ๊ธฐํ˜ธ ์ขŒ์šฐ์—๋Š” ์ขŒ์šฐ์—๋Š” ์ขŒ์šฐ์—๋Š” ์ขŒ์šฐ์—๋Š” ์ŠคํŽ˜์ด์Šค ์ŠคํŽ˜์ด์Šค ์ŠคํŽ˜์ด์Šค ์ŠคํŽ˜์ด์Šค ์‚ฝ์ž… ์‚ฝ์ž… ์‚ฝ์ž… ์‚ฝ์ž…. . . . # # # # ๋Œ€๊ด„ํ˜ธ๋ฅผ ๋Œ€๊ด„ํ˜ธ๋ฅผ ๋Œ€๊ด„ํ˜ธ๋ฅผ ๋Œ€๊ด„ํ˜ธ๋ฅผ test test test test๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋Œ€์‹  ๋Œ€์‹  ๋Œ€์‹  ๋Œ€์‹  ์‚ฌ์šฉํ•  ์‚ฌ์šฉํ•  ์‚ฌ์šฉํ•  ์‚ฌ์šฉํ•  ์ˆ˜ ์ˆ˜ ์ˆ˜ ์ˆ˜ ์žˆ์Œ ์žˆ์Œ ์žˆ์Œ ์žˆ์Œ # test # test # test # test๋ช…๋ น์–ด์—์„œ๋Š” ๋ช…๋ น์–ด์—์„œ๋Š” ๋ช…๋ น์–ด์—์„œ๋Š” ๋ช…๋ น์–ด์—์„œ๋Š” ์™€์ผ๋“œ์นด๋“œ๋ฅผ ์™€์ผ๋“œ์นด๋“œ๋ฅผ ์™€์ผ๋“œ์นด๋“œ๋ฅผ ์™€์ผ๋“œ์นด๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์‚ฌ์šฉํ•  ์‚ฌ์šฉํ•  ์‚ฌ์šฉํ•  ์ˆ˜ ์ˆ˜ ์ˆ˜ ์ˆ˜ ์—†์Œ ์—†์Œ ์—†์Œ ์—†์Œ # $x # $x # $x # $x๊ฐ€ ๊ฐ€ ๊ฐ€ ๊ฐ€ $y $y $y $y๋ณด๋‹ค ๋ณด๋‹ค ๋ณด๋‹ค ๋ณด๋‹ค ํฐ์ง€ ํฐ์ง€ ํฐ์ง€ ํฐ์ง€( ( ( (- - - -gt gt gt gt) ) ) ) ๊ฒ€์‚ฌํ•จ ๊ฒ€์‚ฌํ•จ ๊ฒ€์‚ฌํ•จ ๊ฒ€์‚ฌํ•จ. 0 . 0 . 0 . 0์ด๋ฉด ์ด๋ฉด ์ด๋ฉด ์ด๋ฉด ์ฐธ ์ฐธ ์ฐธ ์ฐธ, 1 , 1 , 1 , 1์ด๋ฉด ์ด๋ฉด ์ด๋ฉด ์ด๋ฉด ๊ฑฐ์ง“ ๊ฑฐ์ง“ ๊ฑฐ์ง“ ๊ฑฐ์ง“ # $x # $x # $x # $x๊ฐ€ ๊ฐ€ ๊ฐ€ ๊ฐ€ $y $y $y $y๋ณด๋‹ค ๋ณด๋‹ค ๋ณด๋‹ค ๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ์ž‘๊ฑฐ๋‚˜ ์ž‘๊ฑฐ๋‚˜ ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€์ง€ ๊ฐ™์€์ง€ ๊ฐ™์€์ง€ ๊ฐ™์€์ง€( ( ( (- - - -le) le) le) le) ๊ฒ€์‚ฌํ•จ ๊ฒ€์‚ฌํ•จ ๊ฒ€์‚ฌํ•จ ๊ฒ€์‚ฌํ•จ. 0 . 0 . 0 . 0์ด๋ฉด ์ด๋ฉด ์ด๋ฉด ์ด๋ฉด ์ฐธ ์ฐธ ์ฐธ ์ฐธ, 1 , 1 , 1 , 1์ด๋ฉด ์ด๋ฉด ์ด๋ฉด ์ด๋ฉด ๊ฑฐ์ง“ ๊ฑฐ์ง“ ๊ฑฐ์ง“ ๊ฑฐ์ง“
  • 20. 20 โ€˜ifโ€™ ๋ช…๋ น์–ด ์กฐ๊ฑด์„ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ํ˜•ํƒœ ํ˜•์‹ ํ˜•์‹ ํ˜•์‹ ํ˜•์‹ if if if if ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด then then then then ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด fi fi fi fi ( ( ( (์ˆซ์ž ์ˆซ์ž ์ˆซ์ž ์ˆซ์ž ๋ฐ ๋ฐ ๋ฐ ๋ฐ ๋ฌธ์ž์—ด์— ๋ฌธ์ž์—ด์— ๋ฌธ์ž์—ด์— ๋ฌธ์ž์—ด์— ๋Œ€ํ•ด ๋Œ€ํ•ด ๋Œ€ํ•ด ๋Œ€ํ•ด test test test test ์‚ฌ์šฉ ์‚ฌ์šฉ ์‚ฌ์šฉ ์‚ฌ์šฉ โ€“ old) old) old) old) if if if if test test test test ์กฐ๊ฑด์‹ ์กฐ๊ฑด์‹ ์กฐ๊ฑด์‹ ์กฐ๊ฑด์‹ then then then then ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด fi fi fi fi ( ( ( (๋˜๋Š” ๋˜๋Š” ๋˜๋Š” ๋˜๋Š”) ) ) ) if [ if [ if [ if [ ๋ฌธ์ž์—ด ๋ฌธ์ž์—ด ๋ฌธ์ž์—ด ๋ฌธ์ž์—ด/ / / /์ˆ˜์‹ ์ˆ˜์‹ ์ˆ˜์‹ ์ˆ˜์‹ ] then ] then ] then ] then ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด fi fi fi fi ํ˜•์‹ ํ˜•์‹ ํ˜•์‹ ํ˜•์‹ ( ( ( (๋ฌธ์ž์—ด์— ๋ฌธ์ž์—ด์— ๋ฌธ์ž์—ด์— ๋ฌธ์ž์—ด์— ๋Œ€ํ•ด ๋Œ€ํ•ด ๋Œ€ํ•ด ๋Œ€ํ•ด test test test test ์‚ฌ์šฉ ์‚ฌ์šฉ ์‚ฌ์šฉ ์‚ฌ์šฉ โ€“ new new new new ํ˜•์‹ ํ˜•์‹ ํ˜•์‹ ํ˜•์‹) ) ) ) if [[ if [[ if [[ if [[ ๋ฌธ์ž์—ด ๋ฌธ์ž์—ด ๋ฌธ์ž์—ด ๋ฌธ์ž์—ด ์กฐ๊ฑด์‹ ์กฐ๊ฑด์‹ ์กฐ๊ฑด์‹ ์กฐ๊ฑด์‹ ]] then ]] then ]] then ]] then ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด fi fi fi fi ( ( ( (์ˆซ์ž์— ์ˆซ์ž์— ์ˆซ์ž์— ์ˆซ์ž์— ๋Œ€ํ•ด ๋Œ€ํ•ด ๋Œ€ํ•ด ๋Œ€ํ•ด let let let let ์‚ฌ์šฉ ์‚ฌ์šฉ ์‚ฌ์šฉ ์‚ฌ์šฉ โ€“ new new new new ํ˜•์‹ ํ˜•์‹ ํ˜•์‹ ํ˜•์‹) ) ) ) if (( if (( if (( if (( ์ˆ˜์‹ ์ˆ˜์‹ ์ˆ˜์‹ ์ˆ˜์‹ )) )) )) ))
  • 21. 21 โ€˜ifโ€™ ๋ช…๋ น์–ด ์˜ˆ์ œ # # # # โ€˜grep grep grep grepโ€™ ๋ช…๋ น์–ด๊ฐ€ ๋ช…๋ น์–ด๊ฐ€ ๋ช…๋ น์–ด๊ฐ€ ๋ช…๋ น์–ด๊ฐ€ /etc/ /etc/ /etc/ /etc/passwd passwd passwd passwd ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ณ€์ˆ˜ ๋ณ€์ˆ˜ ๋ณ€์ˆ˜ ๋ณ€์ˆ˜ name name name name์„ ์„ ์„ ์„ ์ฐพ๋Š”๋‹ค ์ฐพ๋Š”๋‹ค ์ฐพ๋Š”๋‹ค ์ฐพ๋Š”๋‹ค. . . . ํ‘œ์ค€ ํ‘œ์ค€ ํ‘œ์ค€ ํ‘œ์ค€ ์ถœ๋ ฅ๊ณผ ์ถœ๋ ฅ๊ณผ ์ถœ๋ ฅ๊ณผ ์ถœ๋ ฅ๊ณผ ํ‘œ์ค€ ํ‘œ์ค€ ํ‘œ์ค€ ํ‘œ์ค€ ์—๋Ÿฌ๋Š” ์—๋Ÿฌ๋Š” ์—๋Ÿฌ๋Š” ์—๋Ÿฌ๋Š” /dev/null /dev/null /dev/null /dev/null๋กœ ๋กœ ๋กœ ๋กœ ๋ฆฌ๋‹ค์ด๋ ‰์…˜ ๋ฆฌ๋‹ค์ด๋ ‰์…˜ ๋ฆฌ๋‹ค์ด๋ ‰์…˜ ๋ฆฌ๋‹ค์ด๋ ‰์…˜ ๋จ ๋จ ๋จ ๋จ # # # # โ€˜grep grep grep grepโ€™ ๋ช…๋ น์–ด์˜ ๋ช…๋ น์–ด์˜ ๋ช…๋ น์–ด์˜ ๋ช…๋ น์–ด์˜ ์ข…๋ฃŒ ์ข…๋ฃŒ ์ข…๋ฃŒ ์ข…๋ฃŒ ์ƒํƒœ๊ฐ€ ์ƒํƒœ๊ฐ€ ์ƒํƒœ๊ฐ€ ์ƒํƒœ๊ฐ€ 0 0 0 0์ด๋ฉด ์ด๋ฉด ์ด๋ฉด ์ด๋ฉด, then , then , then , then ์—์„œ๋ถ€ํ„ฐ ์—์„œ๋ถ€ํ„ฐ ์—์„œ๋ถ€ํ„ฐ ์—์„œ๋ถ€ํ„ฐ fi fi fi fi ๋ฅผ ๋ฅผ ๋ฅผ ๋ฅผ ๋งŒ๋‚  ๋งŒ๋‚  ๋งŒ๋‚  ๋งŒ๋‚  ๋•Œ๊นŒ์ง€ ๋•Œ๊นŒ์ง€ ๋•Œ๊นŒ์ง€ ๋•Œ๊นŒ์ง€ ๋‚˜์˜ค๋Š” ๋‚˜์˜ค๋Š” ๋‚˜์˜ค๋Š” ๋‚˜์˜ค๋Š” ๋ฌธ์žฅ๋“ค์„ ๋ฌธ์žฅ๋“ค์„ ๋ฌธ์žฅ๋“ค์„ ๋ฌธ์žฅ๋“ค์„ ์‹คํ–‰ํ•œ๋‹ค ์‹คํ–‰ํ•œ๋‹ค ์‹คํ–‰ํ•œ๋‹ค ์‹คํ–‰ํ•œ๋‹ค. . . . # # # # fi fi fi fi๋Š” ๋Š” ๋Š” ๋Š” then then then then๋‹ค์Œ์— ๋‹ค์Œ์— ๋‹ค์Œ์— ๋‹ค์Œ์— ๋‚˜์˜ค๋Š” ๋‚˜์˜ค๋Š” ๋‚˜์˜ค๋Š” ๋‚˜์˜ค๋Š” ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ชฉ๋ก์˜ ๋ชฉ๋ก์˜ ๋ชฉ๋ก์˜ ๋ชฉ๋ก์˜ ๋์„ ๋์„ ๋์„ ๋์„ ์˜๋ฏธํ•œ๋‹ค ์˜๋ฏธํ•œ๋‹ค ์˜๋ฏธํ•œ๋‹ค ์˜๋ฏธํ•œ๋‹ค. . . .
  • 22. 22 โ€˜exitโ€™ ๋ช…๋ น์–ด์™€ โ€˜?โ€™ ๋ณ€์ˆ˜ โ€˜exitโ€™๋ช…๋ น์–ด๋Š” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ค‘์ง€์‹œํ‚ค๊ณ  ๋ช…๋ นํ–‰์œผ ๋กœ ๋Œ์•„๊ฐ€๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉํ•จ ํŠน์ • ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•œ ํƒ“์— ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ข…๋ฃŒ์‹œ์ผœ์•ผ ํ•  ๊ฒฝ์šฐ ์ฃผ๋กœ ์‚ฌ์šฉ ์ธ์ž๋Š” 0~255 ์‚ฌ์ด์˜ ์ˆซ์ž ์‚ฌ์šฉ ๊ฐ€๋Šฅ ์ธ์ž๊ฐ’ 0 : ํ”„๋กœ๊ทธ๋žจ์ด ์„ฑ๊ณต์ ์ธ ์ˆ˜ํ–‰์„ ๋งˆ์นจ 0์ด์™ธ์˜ ๊ฐ’ : ์„ฑ๊ณต์ ์ธ ์ˆ˜ํ–‰์˜ ์‹คํŒจ๋ฅผ ์˜๋ฏธ โ€˜exitโ€™ ๋ช…๋ น์–ด์— ์ฃผ์–ด์ง€๋Š” ์ธ์ž๋Š” ์‰˜์˜ โ€˜?โ€™ ๋ณ€์ˆ˜์— ์ €์žฅ๋จ
  • 23. 23 โ€˜exitโ€™ ๋ช…๋ น์–ด์™€ โ€˜?โ€™ ๋ณ€์ˆ˜ ์˜ˆ์ œ ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑํ•˜๊ธฐ (bigfiles)
  • 24. 24 โ€˜exitโ€™ ๋ช…๋ น์–ด์™€ โ€˜?โ€™ ๋ณ€์ˆ˜ ์˜ˆ์ œ(Contโ€™d) ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ํ•˜๊ธฐ (bigfiles)
  • 25. 25 โ€˜if/elseโ€™ ๋ช…๋ น์–ด ์–‘์žํƒ์ผ(two-way decision making)์„ ํ‘œ ํ˜„ํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•จ โ€˜ifโ€™ ๋‹ค์Œ์˜ ๋ช…๋ น์–ด๊ฐ€ ๊ฑฐ ์ง“์œผ๋กœ ํ‰๊ฐ€๋˜๋ฉด โ€˜elseโ€™ ๋‹ค์Œ์˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ ํ•จ ํ˜•์‹ ํ˜•์‹ ํ˜•์‹ ํ˜•์‹ if if if if ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด then then then then ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด( ( ( (๋“ค ๋“ค ๋“ค ๋“ค) ) ) ) else else else else ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด( ( ( (๋“ค ๋“ค ๋“ค ๋“ค) ) ) ) fi fi fi fi
  • 26. 26 โ€˜if/elseโ€™ ๋ช…๋ น์–ด ์˜ˆ์ œ ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ/์‹คํ–‰ํ•˜๊ธฐ (ifelseTest)
  • 27. 27 โ€˜if/elif/elseโ€™ ๋ช…๋ น์–ด ๋‹ค์ค‘ํƒ์ผ(multi-way decision making)์„ ํ‘œํ˜„ํ•˜ ๋Š”๋ฐ ์‚ฌ์šฉํ•จ โ€˜ifโ€™ ๋‹ค์Œ์˜ ๋ช…๋ น์–ด๊ฐ€ ๊ฑฐ์ง“์œผ ๋กœ ํ‰๊ฐ€๋˜๋ฉด โ€˜elifโ€™ ๋‹ค์Œ์˜ ๋ช… ๋ น์–ด๋ฅผ ํ‰๊ฐ€ํ•˜๊ณ  ์ด ๋ช…๋ น์–ด ์˜ ์ˆ˜ํ–‰์ด ์„ฑ๊ณตํ•˜๋ฉด โ€˜thenโ€™ ์ดํ•˜์˜ ๋ฌธ์žฅ์„ ์‹คํ–‰ ์ฃผ์–ด์ง„ โ€˜elifโ€™๋ฌธ์žฅ์ด ๋ชจ๋‘ ์‹ค ํŒจ์ธ ๊ฒฝ์šฐ โ€˜elseโ€™์ดํ•˜์˜ ๋ฌธ ์žฅ์ด ์‹คํ–‰๋จ ํ˜•์‹ ํ˜•์‹ ํ˜•์‹ ํ˜•์‹ if if if if ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด then then then then ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด( ( ( (๋“ค ๋“ค ๋“ค ๋“ค) ) ) ) elif elif elif elif ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด then then then then ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด( ( ( (๋“ค ๋“ค ๋“ค ๋“ค) ) ) ) elif elif elif elif ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด then then then then ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด( ( ( (๋“ค ๋“ค ๋“ค ๋“ค) ) ) ) else else else else ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด( ( ( (๋“ค ๋“ค ๋“ค ๋“ค) ) ) ) fi fi fi fi
  • 28. 28 โ€˜if/elif/elseโ€™ ๋ช…๋ น์–ด ์˜ˆ์ œ(1) ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑํ•˜๊ธฐ (tellme)
  • 29. 29 โ€˜if/elif/elseโ€™ ๋ช…๋ น์–ด ์˜ˆ์ œ(1)(Contโ€™d) ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ํ•˜๊ธฐ (tellme)
  • 30. 30 โ€˜if/elif/elseโ€™ ๋ช…๋ น์–ด ์˜ˆ์ œ(2) ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑํ•˜๊ธฐ (tellme2)
  • 31. 31 ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ํ•˜๊ธฐ (tellme2) โ€˜if/elif/elseโ€™ ๋ช…๋ น์–ด ์˜ˆ์ œ(2)(Contโ€™d)
  • 32. 32 ๋‚ด์žฅ๋ช…๋ น์–ด โ€˜nullโ€™ ์ฝœ๋ก (:)์œผ๋กœ ๋‚˜ํƒ€๋ƒ„ ์‹ค์ œ ์•„๋ฌด๋Ÿฐ ์ž‘์—…๋„ ํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋‹จ์ง€ ์ข…๋ฃŒ ์ƒํƒœ๋ฅผ 0 ์œผ๋กœ ๋Œ๋ ค์คŒ ์ฃผ๋กœ โ€˜ifโ€™๋‹ค์Œ์— ์–ด๋–ค ์ž‘์—… ๋„ ์ง€์ •ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์„ ๋•Œ ์‚ฌ์šฉ (โ€˜thenโ€™๋‹ค์Œ์— ๋ฌธ์žฅ์„ ๊ธฐ์ˆ ํ•˜์ง€ ์•Š์œผ๋ฉด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ) ๋ฌดํ•œ๋ฃจํ”„๋ฅผ ์ž‘์„ฑํ•  ๋•Œ๋„ ์‚ฌ์šฉ
  • 33. 33 โ€˜caseโ€™ ๋ช…๋ น์–ด ๋‹ค์ค‘๋ถ„๊ธฐ(multiway branching) ๋ช…๋ น์–ด๋กœ์จ, if/elif ๋Œ€์‹  ์‚ฌ์šฉ๊ฐ€๋Šฅ โ€˜caseโ€™ ๋ณ€์ˆ˜์™€ ๋Œ€์‘๋˜๋Š” โ€˜valueโ€™๊ฐ€ ์—†์œผ๋ฉด โ€˜*)โ€™ ๊ธฐํ˜ธ ๋‹ค์Œ์—์„œ๋ถ€ํ„ฐ โ€˜esacโ€™ ์‚ฌ์ด ์˜ ๋ฌธ์žฅ๋“ค์„ ์ˆ˜ํ–‰ํ•จ โ€˜*)โ€™ ๊ธฐํ˜ธ์˜ ์—ญํ• ์€ if/else ์กฐ๊ฑด๋ฌธ์—์„œ else์™€ ๋™์ผ โ€˜caseโ€™ ๋ณ€์ˆ˜์˜ ๊ฐ’์—๋Š” ์™€์ผ ๋“œ์นด๋“œ๋‚˜ |(OR์—ฐ์‚ฐ์ž)๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ ํ˜•์‹ ํ˜•์‹ ํ˜•์‹ ํ˜•์‹ case case case case ๋ณ€์ˆ˜ ๋ณ€์ˆ˜ ๋ณ€์ˆ˜ ๋ณ€์ˆ˜ in in in in value1) value1) value1) value1) ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด( ( ( (๋“ค ๋“ค ๋“ค ๋“ค) ) ) ) ;; ;; ;; ;; value2) value2) value2) value2) ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด( ( ( (๋“ค ๋“ค ๋“ค ๋“ค) ) ) ) ;; ;; ;; ;; *) *) *) *) ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด( ( ( (๋“ค ๋“ค ๋“ค ๋“ค) ) ) ) ;; ;; ;; ;; esac esac esac esac
  • 34. 34 โ€˜caseโ€™ ๋ช…๋ น์–ด ์˜ˆ์ œ ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑํ•˜๊ธฐ (xcolors)
  • 35. 35 โ€˜caseโ€™ ๋ช…๋ น์–ด ์˜ˆ์ œ(Contโ€™d) ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ํ•˜๊ธฐ (xcolors)
  • 36. 36 ๋ฃจํ”„ ๋ช…๋ น์–ด ๋ฃจํ”„ ๋ช…๋ น์–ด๋Š” ๋ช…๋ น์–ด ํ˜น์€ ๋ช…๋ น์–ด ์ง‘ํ•ฉ์„, ์ผ์ • ํšŒ์ˆ˜๋งŒํผ ๋ฐ˜๋ณตํ•˜๊ฑฐ๋‚˜ ํŠน์ •ํ•œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•  ๋•Œ๊นŒ์ง€ ๊ณ„์† ์‹คํ–‰์‹œ์ผœ์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์— ์‚ฌ์šฉ ๋ฐฐ์‹œ ์‰˜์—์„œ๋Š” for, while, until๊ณผ ๊ฐ™์€ ์„ธ ๊ฐ€ ์ง€ ๋ฃจํ”„๋ฅผ ์ง€์›ํ•จ
  • 37. 37 โ€˜forโ€™ ๋ช…๋ น์–ด โ€˜forโ€™ ๋ฃจํ”„ ๋ช…๋ น์–ด๋Š” ์ •ํ•ด์ง„ ํšŸ์ˆ˜์˜ ๋ฐ˜๋ณต์„ ์œ„ํ•ด ์‚ฌ ์šฉ ์ผ๋ จ์˜ ํŒŒ์ผ์ด๋‚˜ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•ด ๋™์ผํ•œ ๋ช…๋ น์–ด๋“ค ์„ ๋ฐ˜๋ณตํ•˜์—ฌ ์‹คํ–‰์‹œํ‚ด ๋ณ€์ˆ˜(variable)์— ๋‹จ์–ด๊ฐ€ ๋Œ€์ž…๋˜๋ฉด ๋ฃจํ”„์˜ ๋ชธ์ฒด์— ํ•ด๋‹นํ•˜๋Š” โ€˜doโ€™์™€ โ€˜doneโ€™ ์‚ฌ์ด์˜ ๋ช…๋ น์–ด๋“ค์ด ์‹คํ–‰๋จ ํ˜•์‹ ํ˜•์‹ ํ˜•์‹ ํ˜•์‹ for variable in for variable in for variable in for variable in word_list word_list word_list word_list do do do do ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด( ( ( (๋“ค ๋“ค ๋“ค ๋“ค) ) ) ) done done done done
  • 38. 38 โ€˜forโ€™ ๋ช…๋ น์–ด ์˜ˆ์ œ(1) ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ/์‹คํ–‰ํ•˜๊ธฐ (forloop)
  • 39. 39 โ€˜forโ€™ ๋ช…๋ น์–ด ์˜ˆ์ œ(2) ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ/์‹คํ–‰ํ•˜๊ธฐ (backup)
  • 40. 40 โ€˜whileโ€™ ๋ช…๋ น์–ด โ€˜whileโ€™ ๋ช…๋ น์–ด๋Š” ๋‹ค์Œ์— ๋”ฐ๋ผ์˜ค๋Š” ๋ช…๋ น์–ด๋ฅผ ํ‰๊ฐ€ํ•ด์„œ, ์ข… ๋ฃŒ์ƒํƒœ๊ฐ€ 0์ด๋ฉด ๋ฃจํ”„ ๋ชธ์ฒด(do์™€ done์‚ฌ์ด)์˜ ๋ช…๋ น์–ด๋“ค์„ ์ˆ˜ํ–‰์‹œํ‚ด โ€˜whileโ€™ ๋ฃจํ”„์— ์˜ํ•ด ๋ช…๋ น์–ด์˜ ์ข…๋ฃŒ ์ƒํƒœ๊ฐ€ 0์ด ์•„๋‹Œ ๊ฐ’์œผ ๋กœ ๋ฐ”๋€” ๋•Œ๊นŒ์ง€ ๋ฃจํ”„๊ฐ€ ๊ณ„์†๋จ ์ข…๋ฃŒ ์ƒํƒœ๊ฐ€ 0์ด ์•„๋‹Œ ๊ฐ’์ธ ๊ฒฝ์šฐ ํ”„๋กœ๊ทธ๋žจ์˜ ์ œ์–ด๋Š” done ๋‹ค์Œ์œผ๋กœ ์˜ฎ๊ฒจ์ ธ์„œ ๊ณ„์† ์‹คํ–‰ ํ˜•์‹ ํ˜•์‹ ํ˜•์‹ ํ˜•์‹ while while while while ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด do do do do ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด( ( ( (๋“ค ๋“ค ๋“ค ๋“ค) ) ) ) done done done done
  • 41. 41 โ€˜whileโ€™ ๋ช…๋ น์–ด ์˜ˆ์ œ(1) ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ/์‹คํ–‰ํ•˜๊ธฐ (num)
  • 42. 42 โ€˜whileโ€™ ๋ช…๋ น์–ด ์˜ˆ์ œ(2) ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ/์‹คํ–‰ํ•˜๊ธฐ (quiz)
  • 43. 43 โ€˜whileโ€™ ๋ช…๋ น์–ด ์˜ˆ์ œ(3) ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ/์‹คํ–‰ํ•˜๊ธฐ (sayit)
  • 44. 44 โ€˜untilโ€™ ๋ช…๋ น์–ด โ€˜whileโ€™ ๋ช…๋ น์–ด์™€ ์œ ์‚ฌํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๋‚˜ until ๋‹ค์Œ์— ๋‚˜์˜ค๋Š” ๋ช…๋ น์–ด๊ฐ€ ์‹คํŒจํ•ด์•ผ ๋ฃจํ”„๊ฐ€ ์‹คํ–‰๋œ๋‹ค๋Š” ์  ์ด ๋‹ค๋ฆ„ ์ฆ‰, ๋ช…๋ น์–ด์˜ ์ข…๋ฃŒ ์ƒํƒœ๊ฐ€ 0์ด ์•„๋‹Œ ๊ฒฝ์šฐ์— ๋ฃจํ”„๊ฐ€ ์ˆ˜ํ–‰๋จ ์ข…๋ฃŒ ์ƒํƒœ๊ฐ€ 0์ด ๋˜๋ฉด, ๋ฃจํ”„๊ฐ€ ์ข…๋ฃŒํ•˜๊ณ  ํ‚ค์›Œ๋“œ done ๋‹ค์Œ ๋ถ€๋ถ„์ด ์‹คํ–‰๋จ ํ˜•์‹ ํ˜•์‹ ํ˜•์‹ ํ˜•์‹ until until until until ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด do do do do ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด( ( ( (๋“ค ๋“ค ๋“ค ๋“ค) ) ) ) done done done done
  • 45. 45 โ€˜untilโ€™ ๋ช…๋ น์–ด ์˜ˆ์ œ ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ/์‹คํ–‰ํ•˜๊ธฐ (hour)
  • 46. 46 โ€˜selectโ€™ ๋ช…๋ น์–ด ๋ฐฐ์‹œ ์‰˜์—์„œ๋Š” ๋ฉ”๋‰ด ์ƒ์„ฑ์„ ์œ„ํ•ด select๋ผ๋Š” ์ƒˆ๋กœ ์šด ๋ฃจํ”„๋ฅผ ์ œ๊ณตํ•จ ์ˆซ์ž(์ผ๋ จ๋ฒˆํ˜ธ)๋ฅผ ์„ ํƒ ํ•ญ๋ชฉ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋‰ด๋ฅผ ํ‘œ์ค€ ์—๋Ÿฌ๋กœ ์ถœ๋ ฅํ•˜๋ฉด ํ”„๋กฌํ”„ํŠธ PS3์„ ์ด์šฉํ•ด ์‚ฌ ์šฉ์ž์˜ ์ž…๋ ฅ์„ ๊ธฐ๋‹ค๋ฆผ(PS3์˜ ๊ธฐ๋ณธ๊ฐ’์€ #? ์ด๋‹ค) ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๊ฐ’์€ ๋ฐฐ์‹œ ์‰˜์˜ ๋‚ด์žฅ๋ณ€์ˆ˜์ธ REPLY์— ์ €์žฅ๋จ ํ˜•์‹ ํ˜•์‹ ํ˜•์‹ ํ˜•์‹ select select select select var var var var in wordlist in wordlist in wordlist in wordlist do do do do ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด ๋ช…๋ น์–ด( ( ( (๋“ค ๋“ค ๋“ค ๋“ค) ) ) ) done done done done
  • 47. 47 โ€˜selectโ€™ ๋ช…๋ น์–ด ์˜ˆ์ œ(1) ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ/์‹คํ–‰ํ•˜๊ธฐ (runit)
  • 48. 48 โ€˜selectโ€™ ๋ช…๋ น์–ด ์˜ˆ์ œ(2) ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑํ•˜๊ธฐ (class)
  • 49. 49 โ€˜selectโ€™ ๋ช…๋ น์–ด ์˜ˆ์ œ(2)(Contโ€™d) ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ํ•˜๊ธฐ (class)
  • 50. 50 ๋ฃจํ”„ ์ œ์–ด ๋ช…๋ น์–ด ํŠน๋ณ„ํ•œ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜๋ฉด, ๋ฃจํ”„๋ฅผ ํƒˆ์ถœํ•˜๊ฑฐ ๋‚˜, ๋ฃจํ”„์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์œผ๋กœ ๋˜๋Œ์•„๊ฐ€์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐฐ์‹œ ์‰˜์—์„œ๋Š” ์ด๋Ÿฌํ•œ ํŠน์ • ์ƒํ™ฉ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฃจํ”„ ์ œ์–ด ๋ช…๋ น์–ด๋“ค์„ ์ œ๊ณตํ•จ shift, break, continue ๋“ฑ
  • 51. 51 โ€˜shiftโ€™ ๋ช…๋ น์–ด ์ธ์ž ๋ชฉ๋ก์˜ ์ˆœ์„œ์—์„œ, ์ง€์ •ํ•œ ํšŸ์ˆ˜๋งŒํผ ์™ผ์ชฝ์œผ ๋กœ ์ด๋™์‹œํ‚ด ์ธ์ž ๋ชฉ๋ก์ด ์ผ๋‹จ ์ด๋™๋˜๊ณ  ๋‚˜๋ฉด ์˜๊ตฌํžˆ ์ œ๊ฑฐ๋จ ์ฆ‰, ์™ผ์ชฝ์—์„œ ๋ช‡ ๋ฒˆ์งธ ์ธ์ž๊นŒ์ง€ ์ œ๊ฑฐํ•  ๊ฒƒ์ธ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ ํ˜•์‹ ํ˜•์‹ ํ˜•์‹ ํ˜•์‹ shift [n] shift [n] shift [n] shift [n]
  • 52. 52 โ€˜shiftโ€™ ๋ช…๋ น์–ด ์˜ˆ์ œ(1) ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ/์‹คํ–‰ํ•˜๊ธฐ (shifter)
  • 53. 53 โ€˜shiftโ€™ ๋ช…๋ น์–ด ์˜ˆ์ œ(2) ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ/์‹คํ–‰ํ•˜๊ธฐ (doit)
  • 54. 54 โ€˜breakโ€™ ๋ช…๋ น์–ด ๋ฃจํ”„๋ฅผ ์ฆ‰์‹œ ํƒˆ์ถœํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ(ํ”„๋กœ๊ทธ ๋žจ์€ ๊ณ„์† ์ง„ํ–‰๋จ) โ€˜breakโ€™ ๋ช…๋ น์–ด๊ฐ€ ์‹คํ–‰๋˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์˜ ์ œ์–ด๋Š” ๊ณง๋ฐ”๋กœ done ๋‹ค์Œ์œผ๋กœ ์ด๋™ํ•จ ๋ฌดํ•œ ๋ฃจํ”„์˜ ํƒˆ์ถœ์— ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ ํ˜•์‹ ํ˜•์‹ ํ˜•์‹ ํ˜•์‹ break [n] break [n] break [n] break [n]
  • 55. 55 โ€˜breakโ€™ ๋ช…๋ น์–ด ์˜ˆ์ œ ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ/์‹คํ–‰ํ•˜๊ธฐ (loopbreak)
  • 56. 56 โ€˜continueโ€™ ๋ช…๋ น์–ด ์ง€์ •ํ•œ ์กฐ๊ฑด์ด ์ฐธ์ด๋ฉด ์ œ์–ด๋ฅผ ๋ฃจํ”„์˜ ์‹œ์ž‘ ๋ถ€๋ถ„ ์œผ๋กœ ๋˜๋Œ๋ฆผ โ€˜continueโ€™ ์•„๋ž˜์˜ ๋ช…๋ น์–ด๋“ค์€ ๋ชจ๋‘ ๋ฌด์‹œํ•จ ํ˜•์‹ ํ˜•์‹ ํ˜•์‹ ํ˜•์‹ continue [n] continue [n] continue [n] continue [n]
  • 57. 57 โ€˜continueโ€™ ๋ช…๋ น์–ด ์˜ˆ์ œ ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ/์‹คํ–‰ํ•˜๊ธฐ (namelist)
  • 58. 58 ์ค‘์ฒฉ ๋ฃจํ”„์˜ ์ œ์–ด ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑํ•˜๊ธฐ (months)
  • 59. 59 ์ค‘์ฒฉ ๋ฃจํ”„์˜ ์ œ์–ด(Contโ€™d) ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ํ•˜๊ธฐ (months)
  • 60. 60 ๋ฃจํ”„์˜ ์ถœ๋ ฅ์„ ํŒŒ์ผ๋กœ ๋ฆฌ๋‹ค์ด๋ ‰์…˜ ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ/์‹คํ–‰ํ•˜๊ธฐ (numberit)
  • 61. 61 ๋ฃจํ”„์˜ ์ถœ๋ ฅ์„ ์œ ๋‹‰์Šค๋ช…๋ น์–ด๋กœ ํŒŒ์ดํ”„ํ•˜๊ธฐ ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ/์‹คํ–‰ํ•˜๊ธฐ (pipe)
  • 63. 63 ํ•จ์ˆ˜(1) ํ•จ์ˆ˜๋Š” ATT์˜ ์œ ๋‹‰์Šค์ธ System V R2์— ํƒ‘์žฌ๋œ ๋ณธ ์‰˜์— ์„œ ์ฒ˜์Œ ์ง€์›ํ•˜๊ธฐ ์‹œ์ž‘ ๋ช…๋ น์–ด๋‚˜ ๋ช…๋ น์–ด ์ง‘ํ•ฉ์— ๋Œ€ํ•œ ์ด๋ฆ„ ํšจ์œจ์„ฑ์„ ๋†’์ด๊ฑฐ๋‚˜ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ชจ๋“ˆํ™”๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ ์ž์‹ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ํ˜„์žฌ ์‰˜ ๋‚ด์—์„œ ์‹คํ–‰๋จ ํ˜•์‹ ํ˜•์‹ ํ˜•์‹ ํ˜•์‹ ์˜ˆ์ œ ์˜ˆ์ œ ์˜ˆ์ œ ์˜ˆ์ œ function ํ•จ์ˆ˜์ด๋ฆ„ { ๋ช…๋ น์–ด(๋“ค) ; ๋ช…๋ น์–ด(๋“ค); } function dir { echo โ€œDirectories: โ€œ; ls -l | awk โ€˜/^d/ {print $NF} โ€™; }
  • 64. 64 ํ•จ์ˆ˜(2) ํ•จ์ˆ˜ ์„ค์ • ํ•ด์ œ โ–บ unset ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•จ์ˆ˜๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ œ๊ฑฐ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค ํ•จ์ˆ˜์˜ ์ต์ŠคํฌํŠธ(export) โ–บ ํ•จ์ˆ˜๋ฅผ ์ž์‹ ์‰˜๋“ค์—๊ฒŒ ์ต์ŠคํฌํŠธ ํ•  ์ˆ˜ ์žˆ๋‹ค ํ˜•์‹ ํ˜•์‹ ํ˜•์‹ ํ˜•์‹ unset โ€“f function_name ํ˜•์‹ ํ˜•์‹ ํ˜•์‹ ํ˜•์‹ export โ€“f function_name
  • 65. 65 ํ•จ์ˆ˜์— ๊ด€ํ•œ ์ค‘์š”ํ•œ ๊ทœ์น™๋“ค ํ•จ์ˆ˜๋Š” ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ์ •์˜ํ•ด์•ผ ํ•จ ํ•จ์ˆ˜๋Š” ํ˜„์žฌ ํ™˜๊ฒฝ ํ•˜์—์„œ ์‹คํ–‰๋จ. ํ˜ธ์ถœํ•œ ์Šคํฌ๋ฆฝํŠธ์™€ ๋ณ€์ˆ˜๋ฅผ ๊ณต์œ ํ•˜๊ณ  ์ธ์ž ์—ญ์‹œ ์œ„์น˜ ์ธ์ž๋กœ ์ง€์ •ํ•˜์—ฌ ํ•จ์ˆ˜์— ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Œ. โ€˜localโ€™ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ง€์—ญ๋ณ€์ˆ˜๋ฅผ ํ•จ์ˆ˜ ๋‚ด์—์„œ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Œ ํ•จ์ˆ˜ ์•ˆ์—์„œ โ€˜exitโ€™ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์Šคํฌ๋ฆฝํŠธ ์ž์ฒด๊ฐ€ ์ข…๋ฃŒ๋จ ํ•จ์ˆ˜ ๋‚ด์—์„œ ์‚ฌ์šฉํ•œ โ€˜returnโ€™ ๋ฌธ์€ ๊ฐ€์žฅ ์ตœ๊ทผ์— ์‹คํ–‰๋œ ๋ช…๋ น์–ด์˜ ์ข…๋ฃŒ ์ƒํƒœ ๊ฐ’์ด๋‚˜, ์ง€์ •ํ•œ ์ธ์ž ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•จ ๋‚ด์žฅ ๋ช…๋ น์–ด โ€˜export โ€“fโ€™ ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•จ์ˆ˜๋ฅผ ์ž์‹ ์‰˜์— ์ต์ŠคํฌํŠธ ํ•จ โ€˜declare โ€“fโ€™ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•จ์ˆ˜์™€ ๊ทธ ์ •์˜๋ฅผ ์ถœ๋ ฅํ•จ ํŠธ๋žฉ(trap)์€ ๋ณ€์ˆ˜์™€ ๊ฐ™์ด ํ•จ์ˆ˜ ๊ฐ„์—์„œ๋„ ์ „์—ญ์ž„. ๋”ฐ๋ผ์„œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ ํ•œ ์Šคํฌ๋ฆฝํŠธ์™€ ํ•จ์ˆ˜ ๋‘˜ ๋‹ค trap์˜ ์ •์˜๋ฅผ ๊ณต์œ ํ•จ ํ•จ์ˆ˜๊ฐ€ ๋‹ค๋ฅธ ํŒŒ์ผ์— ์ €์žฅ๋˜์–ด ์žˆ๋‹ค๋ฉด ๋งˆ์นจํ‘œ(. ํ˜น์€ source) ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ˜„์žฌ ์Šคํฌ๋ฆฝํŠธ์— ๋ถˆ๋Ÿฌ๋“ค์ผ ์ˆ˜ ์žˆ์Œ ํ•จ์ˆ˜๋Š” ์ž์‹ ์„ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Œ. ์žฌ๊ท€ ํ˜ธ์ถœ ํšŸ์ˆ˜๋Š” ์ œํ•œ์ด ์—†์Œ
  • 66. 66 ํ•จ์ˆ˜ ์ธ์ž์™€ ๋ฐ˜ํ™˜๊ฐ’ ์ธ์ž โ–บ ์ธ์ž์˜ ์ „๋‹ฌ์€ ์œ„์น˜ ์ธ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•จ์ˆ˜๋กœ ๋„˜๊ฒจ์คŒ โ–บ ํ•จ์ˆ˜์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์œ„์น˜ ์ธ์ž๋Š” scope๊ฐ€ ํ•จ์ˆ˜๋‚ด๋กœ ํ•œ์ •๋จ โ–บ ํ•จ์ˆ˜ ๋ฐ–์—์„œ ์‚ฌ์šฉ์ค‘์ธ ๋‹ค๋ฅธ ์œ„์น˜ ์ธ์ž์—๊ฒŒ๋Š” ์•„๋ฌด๋Ÿฐ ์˜ํ–ฅ์„ ๋ฏธ์น˜ ์ง€ ์•Š์Œ ๋‚ด์žฅ ๋ช…๋ น์–ด โ€˜localโ€™ โ–บ ํ˜„์žฌ ํ•จ์ˆ˜์—์„œ๋งŒ ์œ ํšจํ•œ ์ง€์—ญ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑ์‹œํ‚ด ๋‚ด์žฅ ๋ช…๋ น์–ด โ€˜returnโ€™ โ–บ ํ•จ์ˆ˜๋ฅผ ์ข…๋ฃŒํ•œ ํ›„, ์ œ์–ด๋ฅผ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ ๊ณณ์œผ๋กœ ๋˜๋Œ๋ ค์คŒ โ–บ โ€˜returnโ€™ ๋ช…๋ น์–ด์— ์•„๋ฌด๋Ÿฐ ์ธ์ž๋„ ์ง€์ •ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ, ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜ ๊ฐ’์€ ์Šคํฌ๋ฆฝํŠธ ์•ˆ์—์„œ ์ตœ๊ทผ์— ์‚ฌ์šฉ๋œ ๋ช…๋ น์–ด์˜ ์ข…๋ฃŒ ์ƒํƒœ๊ฐ€ ๋จ โ–บ โ€˜returnโ€™ ๋ช…๋ น์–ด์— 0~255 ์‚ฌ์ด์˜ ์ •์ˆ˜๋ฅผ ์ธ์ž๋กœ ์ง€์ •ํ•˜๋ฉด ๊ทธ ๊ฐ’์ด โ€˜?โ€™ ๋ณ€์ˆ˜์— ์ €์žฅ๋จ
  • 69. 69 ํ•จ์ˆ˜ ์˜ˆ์ œ(2) ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ/์‹คํ–‰ํ•˜๊ธฐ (do_increment) ๋ณ€์ˆ˜ ๋ณ€์ˆ˜ ๋ณ€์ˆ˜ ๋ณ€์ˆ˜ sum์€ ์€ ์€ ์€ incrementํ•จ์ˆ˜์—์„œ ํ•จ์ˆ˜์—์„œ ํ•จ์ˆ˜์—์„œ ํ•จ์ˆ˜์—์„œ ์ •์˜ํ•˜์˜€์ง€๋งŒ ์ •์˜ํ•˜์˜€์ง€๋งŒ ์ •์˜ํ•˜์˜€์ง€๋งŒ ์ •์˜ํ•˜์˜€์ง€๋งŒ, ์ง€์—ญ๋ณ€์ˆ˜๊ฐ€ ์ง€์—ญ๋ณ€์ˆ˜๊ฐ€ ์ง€์—ญ๋ณ€์ˆ˜๊ฐ€ ์ง€์—ญ๋ณ€์ˆ˜๊ฐ€ ๋œ๋‹ค ๋œ๋‹ค ๋œ๋‹ค ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ๋”ฐ๋ผ์„œ ๋”ฐ๋ผ์„œ ๋”ฐ๋ผ์„œ ํ•จ์ˆ˜ ํ•จ์ˆ˜ ํ•จ์ˆ˜ ํ•จ์ˆ˜ ๋ฐ–์—์„œ๋Š” ๋ฐ–์—์„œ๋Š” ๋ฐ–์—์„œ๋Š” ๋ฐ–์—์„œ๋Š” ์‚ฌ์šฉํ•  ์‚ฌ์šฉํ•  ์‚ฌ์šฉํ•  ์‚ฌ์šฉํ•  ์ˆ˜ ์ˆ˜ ์ˆ˜ ์ˆ˜ ์—†๋‹ค ์—†๋‹ค ์—†๋‹ค ์—†๋‹ค. ์•„๋ฌด๊ฒƒ๋„ ์•„๋ฌด๊ฒƒ๋„ ์•„๋ฌด๊ฒƒ๋„ ์•„๋ฌด๊ฒƒ๋„ ์ถœ๋ ฅ๋˜์ง€ ์ถœ๋ ฅ๋˜์ง€ ์ถœ๋ ฅ๋˜์ง€ ์ถœ๋ ฅ๋˜์ง€ ์•Š๋Š”๋‹ค ์•Š๋Š”๋‹ค ์•Š๋Š”๋‹ค ์•Š๋Š”๋‹ค
  • 70. 70 ํ•จ์ˆ˜ ์˜ˆ์ œ(3) ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ/์‹คํ–‰ํ•˜๊ธฐ (do_square)
  • 71. 71 ํ•จ์ˆ˜์™€ โ€˜sourceโ€™ ๋ช…๋ น์–ด ํ•จ์ˆ˜ ์ €์žฅ โ–บ ํ•จ์ˆ˜๋ฅผ ์ข…์ข… .profile์— ์ •์˜ํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธํ•จ๊ณผ ๋™์‹œ์— ์ •์˜ ๋˜๋„๋ก ํ•จ โ–บ ์ €์žฅํ•ด๋‘” ํ•จ์ˆ˜๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋Š” ๋งˆ์นจํ‘œ(. ํ˜น์€ source) ๋ช…๋ น์–ด์™€ ํŒŒ์ผ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜๋ฉด, ํ•จ์ˆ˜์˜ ์ •์˜๊ฐ€ ํ™œ์„ฑํ™”๋จ
  • 72. 72 ์‹œ๊ทธ๋„ ํŠธ๋ž˜ํ•‘(1) ํ”„๋กœ๊ทธ๋žจ ์ˆ˜ํ–‰ ๋„์ค‘ ์‚ฌ์šฉ์ž๊ฐ€ Ctrl โ€“C๋‚˜ Ctrl- ํ‚ค๋ฅผ ๋ˆ„๋ฅด๋ฉด ์‹œ๊ทธ๋„์ด ๋„์ฐฉํ•˜์ž๋งˆ์ž ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋จ ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋Ÿฌํ•œ ์‹œ๊ทธ๋„์— ๋Œ€ํ•ด ์ ์ ˆํ•œ ๋™์ž‘์„ ์ง€์ •ํ•ด ์ค„ ์ˆ˜ ์žˆ์Œ. ์ฆ‰, ์‹œ๊ทธ๋„์„ ๋ฌด์‹œํ•˜๊ฑฐ๋‚˜, ํ•„์š”ํ•œ ๋ช‡๋ช‡ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ข…๋ฃŒํ•˜๋„๋ก ์„ค์ • ํ•ด์คŒ โ€˜trapโ€™ ๋ช…๋ น์–ด๋Š” ์‹œ๊ทธ๋„์— ๋Œ€ํ•ด ์ ์ ˆํ•œ ๋Œ€์ฒ˜ ๋ฐฉ๋ฒ•์„ ์„ค์ •ํ•  ๋•Œ ์‚ฌ์šฉ ํ˜•์‹ ํ˜•์‹ ํ˜•์‹ ํ˜•์‹ ์˜ˆ์ œ ์˜ˆ์ œ ์˜ˆ์ œ ์˜ˆ์ œ trap โ€˜๋ช…๋ น์–ด; ๋ช…๋ น์–ดโ€™ ์‹œ๊ทธ๋„ ๋ฒˆํ˜ธ trap โ€˜๋ช…๋ น์–ด; ๋ช…๋ น์–ดโ€™ ์‹œ๊ทธ๋„ ์ด๋ฆ„ trap โ€˜rm tmp*; exit 1โ€™ 0 1 2 15 trap โ€˜rm tmp*; exit 1โ€™ EXIT HUP INT TERM ์‹œ๊ทธ๋„ ์‹œ๊ทธ๋„ ์‹œ๊ทธ๋„ ์‹œ๊ทธ๋„ 1(์ •์ง€ ์ •์ง€ ์ •์ง€ ์ •์ง€, hangup), 2(์ธํ„ฐ๋ŸฝํŠธ ์ธํ„ฐ๋ŸฝํŠธ ์ธํ„ฐ๋ŸฝํŠธ ์ธํ„ฐ๋ŸฝํŠธ, interrupt), ํ˜น์€ ํ˜น์€ ํ˜น์€ ํ˜น์€ 15(์ข…๋ฃŒ ์ข…๋ฃŒ ์ข…๋ฃŒ ์ข…๋ฃŒ, software termination)๊ฐ€ ๊ฐ€ ๊ฐ€ ๊ฐ€ ๋„์ฐฉํ•˜๋ฉด ๋„์ฐฉํ•˜๋ฉด ๋„์ฐฉํ•˜๋ฉด ๋„์ฐฉํ•˜๋ฉด ๋ชจ๋“  ๋ชจ๋“  ๋ชจ๋“  ๋ชจ๋“  tmp ํŒŒ์ผ์„ ํŒŒ์ผ์„ ํŒŒ์ผ์„ ํŒŒ์ผ์„ ์ง€์šฐ๊ณ  ์ง€์šฐ๊ณ  ์ง€์šฐ๊ณ  ์ง€์šฐ๊ณ  ์ข…๋ฃŒํ•œ๋‹ค ์ข…๋ฃŒํ•œ๋‹ค ์ข…๋ฃŒํ•œ๋‹ค ์ข…๋ฃŒํ•œ๋‹ค.
  • 73. 73 ์‹œ๊ทธ๋„ ํŠธ๋ž˜ํ•‘(2) ์‹œ๊ทธ๋„ ์žฌ์„ค์ • โ–บ ์‹œ๊ทธ๋„์„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์žฌ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” โ€˜trapโ€™๋ช…๋ น์–ด ๋‹ค์Œ์— ์‹œ๊ทธ๋„ ์ด๋ฆ„์ด๋‚˜ ๋ฒˆํ˜ธ๋งŒ ์ง€์ •ํ•จ ์‹œ๊ทธ๋„ ๋ฌด์‹œ โ–บ โ€˜trapโ€™ ๋ช…๋ น์–ด ๋‹ค์Œ์— ํ•œ ์Œ์˜ ๋นˆ ๋”ฐ์˜ดํ‘œ๊ฐ€ ์˜ค๋ฉด, ๋’ค์— ๋‚˜์—ดํ•œ ์‹œ๊ทธ ๋„๋“ค์ด ๋ฌด์‹œ๋จ ์˜ˆ์ œ ์˜ˆ์ œ ์˜ˆ์ œ ์˜ˆ์ œ trap 2 ๋˜๋Š” ๋˜๋Š” ๋˜๋Š” ๋˜๋Š” trap INT 2๋ฒˆ ๋ฒˆ ๋ฒˆ ๋ฒˆ ์‹œ๊ทธ๋„์ธ ์‹œ๊ทธ๋„์ธ ์‹œ๊ทธ๋„์ธ ์‹œ๊ทธ๋„์ธ SIGINT๋ฅผ ๋ฅผ ๋ฅผ ๋ฅผ ์ดˆ๊ธฐ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐ๊ฐ’์œผ๋กœ ์žฌ์„ค์ •ํ•จ ์žฌ์„ค์ •ํ•จ ์žฌ์„ค์ •ํ•จ ์žฌ์„ค์ •ํ•จ. ์ด ์ด ์ด ์ด ์‹œ๊ทธ๋„์€ ์‹œ๊ทธ๋„์€ ์‹œ๊ทธ๋„์€ ์‹œ๊ทธ๋„์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฃฝ์ผ ์ฃฝ์ผ ์ฃฝ์ผ ์ฃฝ์ผ ๋•Œ ๋•Œ ๋•Œ ๋•Œ ์‚ฌ์šฉํ•จ ์‚ฌ์šฉํ•จ ์‚ฌ์šฉํ•จ ์‚ฌ์šฉํ•จ. ์˜ˆ๋ฅผ๋“ค๋ฉด ์˜ˆ๋ฅผ๋“ค๋ฉด ์˜ˆ๋ฅผ๋“ค๋ฉด ์˜ˆ๋ฅผ๋“ค๋ฉด Ctrl - C ์˜ˆ์ œ ์˜ˆ์ œ ์˜ˆ์ œ ์˜ˆ์ œ trap โ€œ โ€ 1 2 ๋˜๋Š” ๋˜๋Š” ๋˜๋Š” ๋˜๋Š” trap โ€œ โ€ HUP INT ์‰˜์€ ์‰˜์€ ์‰˜์€ ์‰˜์€ 1๋ฒˆ ๋ฒˆ ๋ฒˆ ๋ฒˆ ์‹œ๊ทธ๋„ ์‹œ๊ทธ๋„ ์‹œ๊ทธ๋„ ์‹œ๊ทธ๋„(SIGHUP)๊ณผ ๊ณผ ๊ณผ ๊ณผ 2๋ฒˆ ๋ฒˆ ๋ฒˆ ๋ฒˆ ์‹œ๊ทธ๋„ ์‹œ๊ทธ๋„ ์‹œ๊ทธ๋„ ์‹œ๊ทธ๋„(SIGINT)์„ ์„ ์„ ์„ ๋ฌด์‹œํ•จ ๋ฌด์‹œํ•จ ๋ฌด์‹œํ•จ ๋ฌด์‹œํ•จ
  • 74. 74 ํŠธ๋žฉ ์ƒํƒœ ๋ณด๊ธฐ โ€˜trapโ€™ ์„ ์ž…๋ ฅํ•˜๋ฉด trap์— ์ง€์ •๋œ ๋ชจ๋“  ๋‚ด์šฉ์ด ์ถœ ๋ ฅ๋จ # ์‹œ๊ทธ๋„ ์‹œ๊ทธ๋„ ์‹œ๊ทธ๋„ ์‹œ๊ทธ๋„ 2 (Ctrl โ€“C)๊ฐ€ ๊ฐ€ ๊ฐ€ ๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ๋“ค์–ด์˜ค๋ฉด ๋“ค์–ด์˜ค๋ฉด ๋“ค์–ด์˜ค๋ฉด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ข…๋ฃŒ ์ข…๋ฃŒ ์ข…๋ฃŒ ์ข…๋ฃŒ ์‹œํ‚ค๋„๋ก ์‹œํ‚ค๋„๋ก ์‹œํ‚ค๋„๋ก ์‹œํ‚ค๋„๋ก ์„ค์ •ํ•จ ์„ค์ •ํ•จ ์„ค์ •ํ•จ ์„ค์ •ํ•จ # trap ๋ช…๋ น์–ด์— ๋ช…๋ น์–ด์— ๋ช…๋ น์–ด์— ๋ช…๋ น์–ด์— ์ธ์ž๋ฅผ ์ธ์ž๋ฅผ ์ธ์ž๋ฅผ ์ธ์ž๋ฅผ ์ฃผ์ง€ ์ฃผ์ง€ ์ฃผ์ง€ ์ฃผ์ง€ ์•Š์œผ๋ฉด ์•Š์œผ๋ฉด ์•Š์œผ๋ฉด ์•Š์œผ๋ฉด ์„ค์ •๋œ ์„ค์ •๋œ ์„ค์ •๋œ ์„ค์ •๋œ ๋ชจ๋“  ๋ชจ๋“  ๋ชจ๋“  ๋ชจ๋“  ํŠธ๋žฉ์„ ํŠธ๋žฉ์„ ํŠธ๋žฉ์„ ํŠธ๋žฉ์„ ์ถœ๋ ฅํ•จ ์ถœ๋ ฅํ•จ ์ถœ๋ ฅํ•จ ์ถœ๋ ฅํ•จ
  • 75. 75 ์‹œ๊ทธ๋„ ํŠธ๋ž˜ํ•‘ ์˜ˆ์ œ ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑํ•˜๊ธฐ(trapping)
  • 76. 76 ์‹œ๊ทธ๋„ ํŠธ๋ž˜ํ•‘ ์˜ˆ์ œ(Contโ€™d) ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ํ•˜๊ธฐ(trapping)
  • 77. 77 ํ•จ์ˆ˜์—์„œ์˜ ํŠธ๋ž˜ํ•‘ ํ•จ์ˆ˜์—์„œ ์‹œ๊ทธ๋„์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํŠธ๋žฉ์ด ์‚ฌ์šฉ๋œ ์ƒํƒœ์—์„œ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ ์ถœ๋˜๋ฉด ์ „์ฒด ์Šคํฌ๋ฆฝํŠธ์— ์˜ํ–ฅ์„ ์คŒ. ์ฆ‰, ํŠธ๋žฉ์€ ์Šคํฌ๋ฆฝํŠธ์— ์ ์šฉ๋จ ๋‹ค์Œ ์˜ˆ์—์„œ ์ธํ„ฐ๋ŸฝํŠธ ํ‚ค์ธ ^C ํ‚ค๊ฐ€ ๋ฌด์‹œ๋˜๋„๋ก ํŠธ๋žฉ์„ ์„ค์ •ํ•จ ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑํ•˜๊ธฐ (fun_trap)
  • 78. 78 ํ•จ์ˆ˜์—์„œ์˜ ํŠธ๋ž˜ํ•‘(Contโ€™d) ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ํ•˜๊ธฐ (fun_trap) # trap ๋ช…๋ น์–ด๊ฐ€ ๋ช…๋ น์–ด๊ฐ€ ๋ช…๋ น์–ด๊ฐ€ ๋ช…๋ น์–ด๊ฐ€ ์ธํ„ฐ๋ŸฝํŠธ ์ธํ„ฐ๋ŸฝํŠธ ์ธํ„ฐ๋ŸฝํŠธ ์ธํ„ฐ๋ŸฝํŠธ ํ‚ค ํ‚ค ํ‚ค ํ‚ค(^C)์ธ ์ธ ์ธ ์ธ 2๋ฒˆ ๋ฒˆ ๋ฒˆ ๋ฒˆ ์‹œ๊ทธ๋„์„ ์‹œ๊ทธ๋„์„ ์‹œ๊ทธ๋„์„ ์‹œ๊ทธ๋„์„ ๋ฌด์‹œํ•จ ๋ฌด์‹œํ•จ ๋ฌด์‹œํ•จ ๋ฌด์‹œํ•จ # ^C ํ‚ค๋ฅผ ํ‚ค๋ฅผ ํ‚ค๋ฅผ ํ‚ค๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋ˆ„๋ฅด๋ฉด ๋ˆ„๋ฅด๋ฉด ๋ˆ„๋ฅด๋ฉด Caught in a trap ๋ฉ”์‹œ์ง€๋ฅผ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ์ถœ๋ ฅํ•˜๊ณ  ์ถœ๋ ฅํ•˜๊ณ  ์ถœ๋ ฅํ•˜๊ณ , ์Šคํฌ๋ฆฝํŠธ๋Š” ์Šคํฌ๋ฆฝํŠธ๋Š” ์Šคํฌ๋ฆฝํŠธ๋Š” ์Šคํฌ๋ฆฝํŠธ๋Š” ์˜์›ํžˆ ์˜์›ํžˆ ์˜์›ํžˆ ์˜์›ํžˆ ์‹คํ–‰๋จ ์‹คํ–‰๋จ ์‹คํ–‰๋จ ์‹คํ–‰๋จ # ์ฃผ ์ฃผ ์ฃผ ์ฃผ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋ฌดํ•œ๋ฃจํ”„์— ๋ฌดํ•œ๋ฃจํ”„์— ๋ฌดํ•œ๋ฃจํ”„์— ๋ฌดํ•œ๋ฃจํ”„์— ๋น ์ง ๋น ์ง ๋น ์ง ๋น ์ง
  • 79. 79 ๋””๋ฒ„๊น… ์Šคํฌ๋ฆฝํŠธ ๋””๋ฒ„๊น…(debugging)์— ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜ ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ set ๋ช…๋ น์— โ€“x ์˜ต์…˜์„ ์‚ฌ์šฉํ•จ (๋˜๋Š” bash ๋ช…๋ น์–ด์— โ€“x ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•จ) ์ด๋Ÿฌํ•œ ์˜ต์…˜๋“ค์€ ์Šคํฌ๋ฆฝํŠธ์˜ ์ˆ˜ํ–‰ ๊ณผ์ •์„ ์ถ”์ ํ•ด ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ํ•จ ์Šคํฌ๋ฆฝํŠธ ์•ˆ์˜ ๋ช…๋ น์–ด๋“ค์ด ์น˜ํ™˜๋˜๋Š” ๊ณผ์ •์„ ๋จผ์ € ์ถœ๋ ฅํ•˜๊ณ  ๋‚˜์„œ ๋ช…๋ น์–ด์˜ ์‹คํ–‰์ด ์ด๋ฃจ์–ด์ง ์Šคํฌ๋ฆฝํŠธ ์•ˆ์˜ ๋ฌธ์žฅ์„ ๋ณด์—ฌ์ค„ ๋•Œ๋Š” ์•ž์— + ๊ธฐํ˜ธ๊ฐ€ ๋ถ™์Œ