Skip to content

Latest commit

Β 

History

History
126 lines (71 loc) Β· 2.77 KB

Shell.md

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. μ˜ˆμ•½ λ³€μˆ˜

문자 μ„€λͺ