본문 바로가기
목차
shell

[Bash] shell 기본 : 변수 설정 및 반복구문

by ds31x 2023. 7. 19.
728x90
반응형

https://www.devopsschool.com/blog/shell-scripting-tutorials-looping-iteration-statatement-using-while/

shell script란

shell에서 동작하는 script로,

여러 command 들을 하나의 파일로 저장하고
해당 파일을 line별로 interpreting하여 수행시킬 수 있게 해주는 것을 가르킴.

(.py파일이 python interptreter에 의해 동작하는 것처럼 .sh파일은 shell에 의해 statement별로 execute됨.)

  • bash는 브라이언 폭스가 1987년 개발을 시작하여 1989년 공개한 shell로
    1979년 만들어진 Unix의 Bourne shell과 호환성이 매우 높아서 가장 널리 사용되는 shell임.
  • 이를 좀 더 개선한 zsh과 함께 가장 많이 사용되고 있음.

Shebang Line

shell script 파일은 반드시 #!/usr/bin/env bash와 같은 라인으로 시작해야한다.

해당 line을 Shebang line (sharp# + bang!=shebang)이라고 부름.

이는 unix계열의 command line interface에서 실행되는 script들의 약속으로 #!가 2byte의 magic number로서 실행해야하는 프로그램의 경로를 지정해줌.


변수설정

bash에서 변수설정은 다음과 같음.

변수명="값"
  • 주의할 건 = 앞뒤로 공백문자는 있어선 안된다.
  • bash에서 모든 value는 string으로 처리된다.
  • "로 둘러싸지 않아도 되지만 공백문자가 값에 포함될 경우등을 위해 가급적 싸주는게 좋음.

이렇게 정의된 변수는 다음과 같이 사용됨.

${변수명}
  • ${변수명}은 값으로 치환됨.
  • $변수명으로 해줘도 동작하지만 가독성을 위해 curly bracket을 사용하는 게 좋음.
  • 변수명에 해당하는 값은 항상 string으로 처리된다.
  • 해당 값에 공백문자가 있는 경우에는 "${변수명}" 과 같이 double quotes로 싸주어야 한다.

다음의 예를 수행해 보자.

ds_v="test"

echo ${ds_v}

위를 내용으로 가지는 test.sh를 만들고,
chmod +x test.sh를 통해 실행가능한 파일로 권한변경을 해준 후
./test.sh을 입력하면 수행됨.

chmod +x test.sh
./test.sh

반복문

C 스타일의 for문은 다음과 같음.

root_dir=/home/dsaint31/test
for ((i=1; i<=4; i++))
do
    cp ${root_dir}/test.py ${root_dir}/dtest${i}.py
done
  • dodone 사이에 반복처리될 statement들을 위치시킴.
  • loop variable을 사용하려면 ${i}를 이용함.
  • 주의할 건 for문에서 (( ~ ))로 parentheses가 2개가 사용된다는 점임.

Python 스타일의 for문도 가능함.

arr=(1 2 3 4 5)
for x in "${arr[@]}"
do
    echo ${x}
done
  • ${arr}만 기재하면 안됨.
  • ${arr[@]}이어야만 전체 array의 요소를 다 돌게됨.

다음과 같은 처리도 가능함.

arr="1 2 3 4 5"
for x in ${arr}
do
    echo ${x}
done

 


숫자가 많아야 한 경우는 seq를 이용한다.

for x in `seq 3 9` # 3부터 9까지 자연수.
do
    echo ${x}
done
  • `는 back-tick임.~키와 같이 존재함(tab위).
  • 이는 command substitution을 이용한 방법임.

2023.10.01 - [Linux] - [Shell] command substitution

 

[Shell] command substitution

command substitution (명령어치환)우리나라말로 명령어 치환 이라고 불리며,특정 명령어의 수행결과를 문자열로 입력받는 형태로 셀프로그래밍 등에서 사용됨.command substitution 사용법아래 예제는 resu

ds31x.tistory.com


같이 보면 좋은 자료들

2025.07.25 - [Linux/shell] - Shll Script Conditionals(조건문)-test, [], [[]],(())

 

Shll Script Conditionals(조건문)-test, [], [[]],(())

위의 그림은 가장 많이 애용되는 Extended Conditionals 를 정리(Bash 기준)한 것임. 이외에도 셸 스크립트에서 조건을 검사할 때는 test 또는 다양한 괄호 구문을 사용함 . 대표적으로 다음 네 가지 방법

ds31x.tistory.com


2023.10.02 - [Pages] - Shell 관련 정리

 

Shell 관련 정리

Bash 사용법 01 https://ds31x.tistory.com/pages/Shell-%EC%9A%94%EC%95%BD-%EC%A0%95%EB%A6%AC-bash-%EA%B8%B0%EC%A4%80 shebang line 과 env 사용법 variable 및 반복구문 command substitution pipe, redirect, 다중명령어

ds31x.tistory.com

 

728x90