📝 CentOS의 bash 쉘
- 기본 쉘은 bash(Bourne Again SHell)
- bash 쉘의 특징
- Alias 기능(명령어 단축 기능)
- History 기능
- 연산 기능
- Job Control 기능
- 자동 이름 완성 기능
- 프로프트 제어 기능
- 명령 편집 기능
📝 환경 변수
- 아래와 같은 명령어로 확인 가능
# echo $[환경변수이름]
- 아래의 명령어를 통해 환경 변수의 값을 변경
# export [환경변수]=[값]
📝 쉘 스크립트 프로그래밍
- C언어와 유사하게 프로그래밍이 가능
- 변수, 반복문, 제어문 등의 사용이 가능
- 별도로 컴파일하지 않고 텍스트 파일 형태로 바로 실행
- vi나 gedit으로 작성이 가능
- 리눅스의 많은 부분이 쉘 스크립트로 작성되어 있음
📜 쉘 스크립트 작성과 실행
- vi나 gedit으로 작성
- 쉘 스크립트 파일의 확장명은 되도록 *.sh(shell)로 주는 것이 좋음
# vi sample.sh
- 에디터로 들어와서 간단하게 아래와 같이 입력해주었음
#!/bin/sh
echo "사용자 이름: " $USER
echo "홈 디렉터리: " $HOME
exit 0
- 위 스크립트의 맨 첫 줄은 반드시 들어가야 하는 문장으로, 스크립트를 실행할 쉘을 지정하는 선언문이다.
- 스크립트 파일의 실행을 bash 쉘로 한다는 말을 뜻하며, 이를 미리 선언해줌으로써 bash 쉘 파일임을 미리 알려주는 것이 다른 쉘 간의 오류를 피하는 방법이다.
- 이 라인을 기재하지 않아도 실행된다면, 리눅스 배포판은 기본적으로 bash 쉘로 설정되어 있어서 bash 쉘 상에서 무리없이 동작하는 경우이다.
- 선언문 이후의 코드들은 각각 환경 변수를 이용하여 사용자 이름과 홈 디렉터리를 화면에 출력하는 간단한 코드이다.
- 마지막 줄에 있는 코드는 사실 없어도 무관하나 사용하는 것을 권장하는 편이다.
- 위 코드대로 저장하고 나와서 아래와 같은 명령어를 사용하면 실행 권한 없이도 쉘 스크립트 파일을 실행할 수 있다.
# sh sample.sh
- 또는 실행 권한을 직접 부여한 뒤 실행할 수도 있다.
# chmod +x sample.sh
# ./sample.sh
📜 변수의 기본
- 변수를 사용하기 전에 미리 선언하지 않으며, 변수에 처음 값이 할당되면서 자동으로 변수가 생성된다.
- 모든 변수는 문자열(String)로 취급한다.
- 변수 이름은 대소문자를 구분한다.
- 변수를 대입할 때 '=' 좌우에는 공백이 없어야 한다.
📜 변수의 입력과 출력
- '$' 문자가 포함된 글자를 출력하려면 작은 따옴표(')로 묶어주거나 앞에 백 슬래쉬('\')를 붙인다.
#!/bin/sh
myvar="Hi Woo"
echo $myvar
echo "$myvar"
echo '$myvar'
echo \$myvar
echo 값 입력:
read myvar
echo '$myvar' = $myvar
exit 0
📜 숫자 계산
- 변수에 대입된 값은 모두 문자열로 취급한다.
- 변수에 들어 있는 값을 숫자로 해서 사칙연산 등의 연산을 하려면 expr을 사용한다.
- expr 문장은 `으로 묶는다
- 수식에 괄호 또는 곱하기(*)는 그 앞에 꼭 역 슬래쉬('\')를 붙인다.
#!/bin/sh
num1=100
num2=$num1+200
echo $num2
num3=`expr $num1 + 200`
echo $num3
num4=`expr \( $num1 + 200 \) / 10 \* 2`
echo $num4
exit 0
📜 파라미터(Parameter) 변수
- 파라미터 변수는 $0, $1, $2, ... 의 형태를 갖는다.
- 전체 파라미터는 $*로 표현한다.
#!/bin/sh
echo "실행파일 이름은 <$0>이다"
echo "첫 번째 파라미터는 <$1>이고, 두 번째 파라미터는 <$2>이다"
echo "전체 파라미터는 <$*>이다"
exit 0
📜 기본 if 문
- if 문의 기본 형식은 아래와 같음
- 조건 사이의 각 단어에는 모두 공백이 있어야 함
if [ 조건 ]
then
참일 경우 실행
fi
- 사용 예시
#!/bin/sh
if [ "woo" = "woo" ]
then
echo "참입니다"
fi
exit 0
📜 if ~ else 문
- if ~ else 문의 형식은 아래와 같음
- 참고로, 중복 if문을 위해 else if가 합쳐진 elif 문도 사용할 수 있음
if [ 조건 ]
then
참인 경우 실행
else
거짓인 경우 실행
fi
- 사용 예시
#!/bin/sh
if [ "woo" != "woo" ]
then
echo "참입니다"
else
echo "거짓입니다"
fi
exit 0
📜 case ~ esac 문
- if 문은 참과 거짓의 두 경우만 사용(2중 분기)
- 여러 가지 경우의 수가 있다면 case 문을 사용할 수도 있음(다중 분기)
case 기준값 in
조건값1)
위 조건값과 동일할 시 실행될 구문
조건값2)
위 조건값과 동일할 시 실행될 구문
조건값3)
위 조건값과 동일할 시 실행될 구문
*)
위 조건값 중 아무 것도 해당되지 않을 경우 실행될 구문
esac
📜 AND, OR 관계 연산자
- and는 '-a' 또는 '&&'를 사용
- or는 '-o' 또는 '||'를 사용
📜 반복문 - for
- for 반복문의 기본 형식 중 하나는 아래와 같음
for 변수 in 값1 값2 값3...
do
반복할 문장
done
📜 반복문 - while
- while 반복문의 기본 형식은 아래와 같음
while [ 조건 ]
do
반복할 코드
done
📜 반복문 - until
- while 문과 용도가 거의 같지만, until 문은 조건식이 참일 때까지(= 거짓인 동안) 계속 반복함
until [ 조건 ]
do
반복할 코드
done
📜 그 외
- eval: 문자열을 명령문으로 인식하고 실행
- export: 외부 변수로 선언해줌. 즉, 선언한 변수를 다른 프로그램에서도 사용할 수 있도록 해줌
- printf: C언어의 printf() 함수와 비슷하게 형식을 지정해서 출력
- shift: 파라미터 변수를 왼쪽으로 한 단계씩 아래로 쉬프트 시킴
'🐧 Linux > 이것이 리눅스다(CentOS 8)' 카테고리의 다른 글
[이것이 리눅스다(CentOS 8)] 09장. 네임 서버 설치와 운영 (0) | 2023.04.03 |
---|---|
[이것이 리눅스다(CentOS 8)] 08장. 원격지 시스템 관리하기 (0) | 2023.04.02 |
[이것이 리눅스다(CentOS 8)] 06장. 하드디스크 관리와 사용자별 공간 할당(3) (0) | 2023.04.01 |
[이것이 리눅스다(CentOS 8)] 06장. 하드디스크 관리와 사용자별 공간 할당(2) (0) | 2023.03.31 |
[이것이 리눅스다(CentOS 8)] 06장. 하드디스크 관리와 사용자별 공간 할당(1) (0) | 2023.03.31 |