
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
do와done사이에 반복처리될 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
'shell' 카테고리의 다른 글
| kill: Process에게 Signal을 보내기. (3) | 2025.07.25 |
|---|---|
| Shell 함수 기본: bash, zsh에서 함수 사용하기 (3) | 2025.07.25 |
| Shell Script Conditionals(조건문)-test, [], [[]],(()) (1) | 2025.07.25 |
| [Bash] File과 directory 관련 command (0) | 2024.05.20 |
| [Shell] command substitution (1) | 2023.10.01 |