프로그래밍 노트/Linux

쉘스크립트 기본문법

깡냉쓰 2019. 12. 3. 22:56
728x90
반응형

쉘 스크립트

  • 쉘을 사용해서 프로그래밍을 할 수 있으며, 서버 작업의 자동화를 위해 필요하다.

기본문법

  • 파일의 위의 첫 라인은 "#!/bin/bash" 로 시작해야한다.
  • 쉘 스크립트는 실행 권한(x)을 가져야 한다.

변수선언

  • = 를 이용해서 선언하고 $를 이용해서 사용 (공백은 허용되지 않는다.)
  • {}는 parameter substitution으로 $와 함께 감싼 부분에 변수를 대입해준다.
#!/bin/bash

word="abc"
num=10

echo "${word}"
echo "${num}"

기본 출력

  • echo, printf
  • $# : 스크립트에 전달되는 인자들의 수
  • $0 : 실행된 스크립트명
  • $1, $2 ... : 스크립트로 전달된 인자들 (sh test.sh param1 param2 일 경우 $1은 param1, $2는 param2가 됨)
#!/bin/bash

echo "Test"
printf "script's name : %s\n" $0
printf "%d arguments %s %s\n" $# $1 $2

배열

기본

  • 선언 : 변수명=(원소1 원소2 원소3 ...)
  • 사용 : ${변수명\[인덱스])
#!/bin/bash

arr=("test1" "test2" "test3")
echo ${arr[0]}  # test1
echo ${arr[@]}  # arr의 모든 데이터 출력
echo ${arr[*]}  # arr의 모든 데이터 출력
echo ${#arr[@]} # arr 배열 크기 출력

arr+=("add") # 배열 원소 추가

filelist=( $(ls) ) # 해당 쉘 스크립트 실행 디렉토리의 파일 리스트를 배열로 변수에 저장
echo ${filelist[*]}

배열 원소 삭제

  • /를 사용해 해당 문자열 부분이 있으면 삭제, 삭제하고자 하는 문자나 문자열이 포함되어있는 부분을 모두 삭제
  • (권고) unset을 이용해 삭제
#!/bin/bash

arr=(1 2 3)
remove_element=(3)

arr=( "${arr[@]/$remove_element}" )

for i in ${arr[@]}; do
    echo $i
done
#!/bin/bash

arr=("abc" "def" "defghi")
remove_element=("def")

# Get index of array
echo ${!arr[@]}

for i in ${!arr[@]}; do
    if [ ${arr[i]} = ${remove_element} ]; then
        # Use unset
        unset arr[i]
    fi
done

for i in ${arr[@]}; do
    echo $i
done

조건문

  • if [ 조건 ]; then ... elif [ 조건 ]; then ... else를 사용
  • if (( 산술 연산 )); then ... elif (( 산술 연산 )); then ... else
#!/bin/bash
str="test"

if [ "${str}" = "test" ]; then
    echo "str is test"
else
    echo "str is not test"
fi

반복문

  • while 사용
#!/bin/bash

cnt=0
while (( "${cnt}" < 10 )); do
    echo "${cnt}"
done
  • for문 사용
#!/bin/bash

arr=(1 2 3 4 5 6 7)

for i in ${arr[@]}; do
    printf $i
done
echo

for (( i = 0; i < 7; i++)); do
    printf $i
done
echo

 

참고 : https://www.fun-coding.org/linux_basic3.html

728x90
반응형