ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ๐Ÿ… Ch13 Basic Shell Scripting ๐Ÿ…
    ๐Ÿฎ ํ•™๊ต ๊ณต๋ถ€/๐Ÿ… ์œ ๋‹‰์Šค ์‹œ์Šคํ…œ 2025. 5. 20. 17:25

    Script Language (์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด)

    ๋ฏธ๋ฆฌ ์ „์ฒด๋ฅผ ์ปดํŒŒ์ผํ•˜์ง€ ์•Š๊ณ , ์ธํ„ฐํ”„๋ฆฌํ„ฐ(ํ•ด์„๊ธฐ)๊ฐ€ ํ•œ ์ค„์”ฉ ์ฝ์–ด์„œ ์ฆ‰์‹œ ์‹คํ–‰ํ•˜๋Š” ์–ธ์–ด

    ex) Unix Shell, Python, Perl, Ruby

    <-> ์ปดํŒŒ์ผ ์–ธ์–ด(C/C++)๋Š” ์‹คํ–‰ ์ „ ์ปดํŒŒ์ผํ•ด์•ผ ํ•จ

    ์‰˜ ์Šคํฌ๋ฆฝํŠธ์˜ ์ฃผ๋œ ์šฉ๋„

    ์‹œ์Šคํ…œ ๊ด€๋ฆฌ ์ž๋™ํ™”(System administration): ์„œ๋ฒ„ ์„ค์ •, ๋ฐฑ์—…๋ณต์›, ๋กœ๊ทธ ์ •๋ฆฌ, ์‚ฌ์šฉ์ž ๊ณ„์ • ๊ด€๋ฆฌ ๋“ฑ ๊ด€๋ฆฌ์ž๊ฐ€ ๋งค์ผ ๋ฐ˜๋ณตํ•ด์„œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ์ž‘์—…๋“ค์„ ์ˆ˜์‹ญ ์ค„ ๋‚ด์™ธ์˜ ๊ฐ„๋‹จํ•œ ์‰˜ ์Šคํฌ๋ฆฝํŠธ๋กœ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ

    ๋‹จ์ˆœ/๋ฐ˜๋ณต ์—…๋ฌด์˜ ์ž๋™ํ™”: ์Šคํฌ๋ฆฝํŠธ๋กœ ์ž‘์„ฑํ•ด ๋‘๋ฉด ์‚ฌ๋žŒ์ด ์ผ์ผ์ด ์ฝ˜์†”์—์„œ ํƒ€์ดํ•‘ํ•˜์ง€ ์•Š์•„๋„ ๋จ

    Script file (์‰˜ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์—์„œ์˜ ๊ธฐ๋ณธ ๋ฌธ๋ฒ• ์š”์†Œ)

    #!(Shebang): ์ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์–ด๋–ค ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋กœ ์‹คํ–‰ํ• ์ง€ ์ง€์ •

       hash(#)/bang(!) ex) #!/bin/sh

    #(comments): ์ฃผ์„

    variable=value ๋ณ€์ˆ˜ ํ• ๋‹น

    read var: read ๋’ค์— ๋ณ€์ˆ˜ ์ด๋ฆ„์„ ์“ฐ๋ฉด, ํ‚ค๋ณด๋“œ๋กœ๋ถ€ํ„ฐ ํ•œ ์ค„์„ ์ฝ์–ด ๊ทธ ๊ฐ’์„ ํ•ด๋‹น ๋ณ€์ˆ˜์— ํ• ๋‹น

    ํŠน์ˆ˜ ๋ณ€์ˆ˜(special variables)

    ?: ์ด์ „ ๋ช…๋ น์˜ ์ข…๋ฃŒ ์ƒํƒœ๋ฅผ ์ €์žฅ (0-์„ฑ๊ณต / !0-์‹คํŒจ)

    $: ํ˜„์žฌ ์‰˜ ํ”„๋กœ์„ธ์Šค์˜ PID(Process ID) / ์Šคํฌ๋ฆฝํŠธ๋‚˜ ์„œ๋ธŒ์…€์ด ๋„์›Œ์ง„ ์‹ค์ œ ํ”„๋กœ์„ธ์Šค ๋ฒˆํ˜ธ๊ฐ€ ํ•„์š”ํ•  ๋–„ ์‚ฌ์šฉ

    -: ์‰˜์ด ์‹œ์ž‘๋  ๋•Œ ์‚ฌ์šฉ๋œ ์˜ต์…˜๋“ค

    !: ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ฐฑ๊ทธ๋ผ์šด๋“œ(&) ์‹คํ–‰ํ•œ ํ”„๋กœ์„ธ์Šค์˜ PID / ์—ฌ๋Ÿฌ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—… ์ค‘ ๋ฐฉ๊ธˆ ์‹คํ–‰ํ•œ ์ž‘์—… ์ œ์–ด ์‹œ ์œ ์šฉ

    0: ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ์Šคํฌ๋ฆฝํŠธ(๋˜๋Š” ์…ธ)์˜ ์ด๋ฆ„

    1-9: ์ปค๋งจ๋“œ๋ผ์ธ ์ธ์ˆ˜(argument) 1๋ฒˆ๋ถ€ํ„ฐ 9๋ฒˆ๊นŒ์ง€

    $-: ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์œผ๋กœ ์‚ฌ์šฉ๋œ ์•„๊ทœ๋จผํŠธ ๋˜๋Š” ๋งˆ์ง€๋ง‰ ๋ช…๋ น์˜ ๋งˆ์ง€๋ง‰ ํ† ํฐ / ๊ฐ„๋‹จํžˆ ์ด์ „ ์ธ์ž ์žฌํ™œ์šฉํ•  ๋•Œ ํŽธ๋ฆฌ

    Flow Control

    Test ๋ช…๋ น(์กฐ๊ฑด ๊ฒ€์‚ฌ)

    - test <expression>

    - [ <expression> ]

    ์—ฐ์‚ฐ์ž =, <, >, !=

    ์กฐ๊ฑด๋ฌธ

    - if-then-fi

    if [ ์กฐ๊ฑด ]; then
      # ์กฐ๊ฑด์ด ์ฐธ์ผ ๋•Œ ์‹คํ–‰
    fi

    - if-then-else-fi

    if [ ์กฐ๊ฑด ]; then
      # ์ฐธ์ผ ๋•Œ
    else
      # ๊ฑฐ์ง“์ผ ๋•Œ
    fi

    - if-elif-else-fi

    if [ ์กฐ๊ฑด1 ]; then
      # ์กฐ๊ฑด1 ์ฐธ
    elif [ ์กฐ๊ฑด2 ]; then
      # ์กฐ๊ฑด2 ์ฐธ
    else
      # ๋ชจ๋‘ ๊ฑฐ์ง“
    fi

    - case-in-esac

    case "$var" in
      pattern1)
        ๋ช…๋ น๋“ค ;;
      pattern2|pattern3)
        ๋ช…๋ น๋“ค ;;
      *)
        ๊ธฐ๋ณธ ๋ช…๋ น ;;
    esac

    ๋ฐ˜๋ณต๋ฌธ

    - while-do-done

    while [ ์กฐ๊ฑด ]; do
      # ์กฐ๊ฑด์ด ์ฐธ์ธ ๋™์•ˆ ๋ฐ˜๋ณต
    done

    - until-do-done

    until [ -f /tmp/done.flag ]; do
      echo "์•„์ง /tmp/done.flag ํŒŒ์ผ์ด ์—†์Šต๋‹ˆ๋‹ค."
      sleep 1
    done
    echo "ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค."
Designed by Tistory.