[LINUX]Shell script λ³€μˆ˜


Contents


Shell script λ³€μˆ˜

μ§€μ—­λ³€μˆ˜

  • ν•œ 터미널 λ‚΄μ—μ„œλ§Œ μ‚¬μš©μ΄ κ°€λŠ₯ν•œ λ³€μˆ˜
  • 선언방법
      λ³€μˆ˜λͺ…=κ°’
      declare λ³€μˆ˜λͺ…=κ°’
    
      [root@localhost backup]# a=100
      [root@localhost backup]# declare b=200
    
  • ν™˜κ²½λ³€μˆ˜λ₯Ό μ§€μ—­λ³€μˆ˜λ‘œ λ³€ν™˜ κ°€λŠ₯
      export -n ν™˜κ²½λ³€μˆ˜_이름
      declare -a ν™˜κ²½λ³€μˆ˜_이름
    
      [root@localhost backup]# export -n a
      [root@localhost backup]# declare -a b
    



ν™˜κ²½λ³€μˆ˜

  • μ—¬λŸ¬ 터미널 λ‚΄μ—μ„œ κ³΅μœ ν•  수 μžˆλŠ” λ³€μˆ˜
  • μ„ μ–Έ 방법
      μ§€μ—­λ³€μˆ˜ μ„ μ–Έ ν›„ -> export λ³€μˆ˜λͺ… (μ§€μ—­λ³€μˆ˜λ₯Ό ν™˜κ²½λ³€μˆ˜λ‘œ)
      export λ³€μˆ˜λͺ…=κ°’ (ν™˜κ²½ λ³€μˆ˜ 생성)
      declare -x λ³€μˆ˜λͺ…=κ°’
    
      [root@localhost backup]# export a
      [root@localhost backup]# export c=300
      [root@localhost backup]# declare -x d=400
    



μ½κΈ°μ „μš© λ³€μˆ˜

  • κ°’ 변경이 λΆˆκ°€λŠ₯ν•˜κ³  읽기만 κ°€λŠ₯ν•œ λ³€μˆ˜
      readonly λ³€μˆ˜λͺ…
      declare -r λ³€μˆ˜λͺ…=κ°’
    
      [root@localhost backup]# C="Readonly Local variable"
      [root@localhost backup]# readonly C
      [root@localhost backup]# declare -r D="im Readonly variable"
    
      [root@localhost backup]# C="test"
      error
      [root@localhost backup]# declare D="update!!"
      error
    



λ³€μˆ˜ν™•μΈ

  • env, pringenv, declare을 톡해 λ³€μˆ˜ listλ₯Ό 확인할 수 μžˆλ‹€.
  • echoλ₯Ό 톡해 μ§€μ—­, ν™˜κ²½λ³€μˆ˜ 값을 확인할 수 μžˆλ‹€.
    • a λ³€μˆ˜μ˜ 값을 호좜
        echo $a
      



λ³€μˆ˜ν•΄μ œ

  • unset λ³€μˆ˜λͺ…을 톡해 λ³€μˆ˜λ₯Ό ν•΄μ œν•  수 μžˆλ‹€.



BASH의 ν™˜κ²½λ³€μˆ˜(μ˜ˆμ•½λ³€μˆ˜)

  • bashλ₯Ό 톡해 μžμ‹ shell을 생성할 수 μžˆλ‹€.
  • μƒμœ„ ν”„λ‘œμ„ΈμŠ€(μƒμœ„ BASH)κ°€ μ’…λ£Œλ˜λ©΄ ν•˜μœ„ ν”„λ‘œμ„ΈμŠ€(ν•˜μœ„ BASH)도 μ’…λ£Œλ˜λŠ”κ²Œ μΌλ°˜μ μ΄μ§€λ§Œ 가끔 ν•˜μœ„ ν”„λ‘œμ„ΈμŠ€κ°€ μ‚΄μ•„μžˆλŠ” κ²½μš°κ°€ μžˆλ‹€.
    • 이런 ν”„λ‘œμ„ΈμŠ€λ₯Ό μ’€λΉ„ ν”„λ‘œμ„ΈμŠ€λΌκ³  λΆ€λ₯Έλ‹€.
      | ex. β€œμ‘λ‹΅μ—†μŒβ€ 이라고 λœ¨λ©΄μ„œ μ•ˆκΊΌμ§€λŠ” 경우
ENV.bashrc νŒŒμΌμ—μ„œ μ„€μ •ν•˜λ©° ν•¨μˆ˜μ™€ 별λͺ…등을 μ„€μ •ν•˜λŠ” ν™˜κ²½ 파일의 이름을 μ„€μ •
EUIDShell이 μ‹œμž‘ν•  λ–„ ν˜„μž¬ μ‚¬μš©μžμ˜ 유효 IDλ₯Ό ν™•μž₯ν•œλ‹€.
HISTFILEμ‚¬μš©μžκ°€ μž…λ ₯ν•œ λͺ…λ Ήμ–΄λ“€μ˜ λ‚΄μ—­(History)λ₯Ό 확인할 수 μžˆλ‹€. 기본값은 ~/.bash_history이닀.
HOMEμ‚¬μš©μžμ˜ ν™ˆ λ””λ ‰ν† λ¦¬μ˜ 값을 κ°€μ§€κ³  있으며 νŠΉμ • 디렉토리λ₯Ό μ§€μ •ν•˜μ§€ μ•Šκ³  cd λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•  λ•Œ μ΄μš©ν•œλ‹€.
LANGLC_둜 μ‹œμž‘ν•˜λŠ” λ³€μˆ˜λ“€μ— ν¬ν•¨λ˜μ§€ μ•ŠλŠ” λ‘œμΌ€μΌμ„ μ„€μ •
PATHλͺ…λ Ήμ–΄μ˜ 검색 경둜, 콜둠으둜 κ΅¬λΆ„ν•œ 디렉토리 λͺ©λ‘
PPIDλΆ€λͺ¨ν”„λ‘œμ„ΈμŠ€μ˜ PID
PWDν˜„μž¬ μž‘μ—… 디렉토리
SHELLν˜„μž¬ μ‚¬μš©λ˜μ–΄μ§€κ³  μžˆλŠ” SHELL
UIDν˜„μž¬ μ‚¬μš©μžμ˜ UID

λ³€μˆ˜ μΉ˜ν™˜

  • LINUX μ‚¬μš©ν™˜κ²½ ꡬ성을 μœ„ν•œ 섀정에 μ‚¬μš©λœλ‹€.
  • Windows의 경우 ν™˜κ²½ 섀정을 μœ„ν•΄ ν™˜κ²½ μ„€μ • 파일, λ ˆμ§€μŠ€νŠΈλ¦¬, ν™˜κ²½λ³€μˆ˜ 등을 μ‚¬μš©
  • UNIX의 경우 ν™˜κ²½ 섀정을 μœ„ν•΄ ν™˜κ²½ μ„€μ • 파일, ν™˜κ²½λ³€μˆ˜ 등을 μ‚¬μš©

  • κΈ°μ‘΄ λ³€μˆ˜μ— μΆ”κ°€ν•˜λŠ” 방법
      export [κΈ°μ‘΄λ³€μˆ˜λͺ…]=$[κΈ°μ‘΄λ³€μˆ˜λͺ…]:[μΆ”κ°€ν• dir]
    
      κΈ°μ‘΄ PATH λ³€μˆ˜μ— 경둜(/home/user/bin)을 μΆ”κ°€ =>
      [root@localhost backup]# export PATH=$PATH:/home/user/bin
    
    • EX 1) touchλ₯Ό MYTOUCH둜 μΉ˜ν™˜ν•΄μ„œ μ‚¬μš©ν•˜κΈ° ```shell [root@localhost backup]# export MYTOUCH=touch [root@localhost backup]# $MYTOUCH testfile
  • `(Back Quote) - λ°±μΏΌν„° μ•ˆμ— λͺ…령이 λ¨Όμ € μ‹€ν•΄μ˜€λ””κ³  κ·Έ κ²°κ³Ό 값이 μ•žμ— μžˆλŠ” λͺ…λ Ήμ–΄ 싀행에 μ‚¬μš©λœλ‹€.
      [root@localhost ~]# echo `echo Hi`
      Hi
      [root@localhost ~]# echo "Now Date is :`date`"
      Now Date is : 2022. 03. 22. (ν™”) 15:22:22 KST
    
    • ` μ•ˆμ— echo Hiλ₯Ό λͺ…λ Ήμ–΄μ˜ μ‹€ν–‰ 결과둜 μΉ˜ν™˜ν•œλ‹€.
  • μΏΌνŒ… - λͺ…λ Ήμ–΄μ˜ νŠΉμ • 뢀뢄을 λ¬ΆλŠ” 것
    " ... """ μ•ˆμ˜ λ‚΄μš©μ€ λͺ…λ Ήμ–΄λ‘œ 싀행이 λœλ‹€.(μΉ˜ν™˜ λ™μž‘)
    ' ... ''' μ•ˆμ˜ λ‚΄μš©μ€ λͺ…λ Ήμ–΄λ‘œ 싀행이 μ•ˆλœλ‹€.(μΉ˜ν™˜ λΆˆκ°€)
    \(back slash)\ λ°”λ‘œ λ’€μ˜ ν•œ 문자λ₯Ό 문자 κ·ΈλŒ€λ‘œ 인식(escape)
    • example
        [root@localhost ~]# A=Yejin
        [root@localhost ~]# echo "$A"
        Yejin
        [root@localhost ~]# echo '$A'
        $A
        [root@localhost ~]# echo \$A
        $A