Branching Command(분기 명령)
exit
실행된 프로그램이 종료된 상태(코드)를 전달하는 것이다.
명령이 종료된 직후 종료 코드는 $?변수에 저장됩니다.
따라서 $?값을 확인하면 종료 코드를 확인 할 수 있습니다.
$ sleep 100
100초 동안 멈추는 명령입니다. 이명령을 실행하는 도중 Ctrl + C로 강제로 종료 해보겠습니다.
$?의 값을 확인해본 결과 130이 나왔고 이 결과는 128 + 2(SIGINT)인 것을 알 수 있습니다.
정상적 종료 예
시간을 확인하는 명령을 입력하고 $?의 값을 확인해 보겠습니다.
0이 나왔고 정상적으로 종료된 것을 확인 할 수 있습니다.
비정상 종료 예
cp명령으로 비정상 종료 해보겠습니다.
위 사진 처럼 비정상적인 명령 입력후 확인해보니 1(일반적인 에러)가 출력되는 것을 확인 할 수 있습니다.
종료코드 종류
숫자 | 의미 |
0 | 명령이 정상적으로 종료됨 |
1-255 | 명령어 비정상적으로 종료됨 |
1 | 일반적인 에러 |
2 | Syntax Error |
126 | 명령을 실행 할 수 없음 |
127 | 명령 및 파일이 존재하지 않음 |
128+N | 종료 시그널+N(kill -9 PID로 종료시 128+9=137) N=시그널 번호 |
test
특정 x값 y값을 비교하는 비교 연산자입니다.
사용예시
$ test <명령어> or [ 명령어 ]
1) 10이 들어있는 x변수와 숫자 5를 이용해 x가 5보다 작은지를 출력해보겠습니다.
x가 5보다 크기때문에 false값인 1이 출력되는 것을 볼 수 있습니다.
다른 방법으로 [ ]를 이용해 출력할 수 있습니다.
[ ]안에 좌우로 공백을 넣고 그 공백 사이에 연산자와 각 값들을 넣어 연산을 할 수 있습니다.
2) /etc/ 폴더가 디렉토리인지 출력해 보겠습니다.
true를 반환하기 때문에 0이 결과 값이 되는 것을 볼 수 있습니다.
이 또한 [ ]를 이용해 사용할 수 있습니다.
연산자 종류
연산자 | 의미 |
x -eq y ( Equal ) | x값과 y값이 같으면 true를 리턴 |
x -gt y ( Greater than ) | x값이 y값보다 크면 true를 리턴 |
x -ge y ( Greater eqaul ) | x값이 y값보다 크거나 같으면 true를 리턴 |
x -lt y ( Less than ) | x값이 y값보다 작으면 true를 리턴 |
x -le y ( Less equal ) | x값이 y값보다 작거나 같으면 true를 리턴 |
x -ne ( Not equal ) | x값이 y값과 다르면 ture를 리턴 |
-e file ( exist ) | 파일이 존재하면 true를 리턴 |
-d file ( Directory ) | 디렉토리이면 true를 리턴 |
-f file ( File ) | 파일이면 true를 리턴 |
-x file ( excute ) | 파일이 실행 가능하면 true를 리턴 |
let
특정 x값 y값을 비교하는 산술 연산자입니다. ( 연산 기호에는 " + - * / % "가 있습니다. )
변수에 연산한 값을 넣을 때 사용합니다.
사용예시
expr(export)
expr또한 특정 x값 y값을 비교하는 산술 연산자입니다. ( 연산 기호에는 " + - * / % "가 있습니다. )
연산한 값을 바로 출력할 때 사용합니다.
사용 예시
if-then-else-fi
개발 언어 공부하다 보면 if문을 배우게 되는데 if문과 매우 흡사한 기능을 하는 명령입니다.
if 의 명령이 참일 경우 명령을 실행하고 거짓일 경우 명령문을 빠져나오게 됩니다.
if문 외에 if-else문도 있는 것처럼 쉘에서도 if-else문을 사용할 수 있습니다.
위 순서도 처럼 if의 명령이 참일경우 명령어2실행 거짓일 경우 명령어3실행되게 됩니다.
사용예시
1) if-then을 이용한 스크립트를 이용해 10이 들어간 변수x와 숫자 5를 비교하는 조건 명령을 실행해 보겠습니다.
x(10)변수가 5보다 크면 "greater than 5"를 출력하는 조건문을 실행하니
위 사진처럼 5보다 크기 때문에 echo 명령문이 실행된 것을 볼 수 있습니다.
2) if-then-else를 이용해 /bin/ 디렉토리 안에 data라는 파일을 만들고 파일이 존재하는지 출력해 보겠습니다.
위 스크립트를 실행한 결과 /bin/폴더에 data라는 파일을 만들어 주었기 때문에 참이므로
"exist"가 출력된 것을 볼 수 있습니다.
case
리눅스에서 case문은 개발할 때 Switch문과 비슷합니다. 변수값에 따라 특정 명령어를 실행 시킬 수 있습니다.
위 순서도처럼 변수에 값을 받은 뒤 그 값이 각 값에 해당하는 명령어가 실행되고
그 값들에 해당이 안된다면 기본값인 *의 명령어가 실행됩니다.
사용 예시
자판기를 만들어 보겠습니다. coke, water, soju
위 사진처럼 특정값에 따라 명령이 달라지는 것을 알 수 있고
특정 값에 해당이 안되면 기본 명령이 실행되는 것을 볼 수 있습니다.
리눅스의 모든 것을 배울 때까지 공부해봅시다. |

'Linux > Shell Programming' 카테고리의 다른 글
08.[Linux] 쉘(shell) Looping (0) | 2023.02.20 |
---|---|
06.[Linux] 쉘(shell) Script Input / Output (0) | 2023.02.04 |
05.[Linux] 쉘(shell) Positional Parameters 란? (1) | 2023.01.31 |
04.[Linux] 쉘(shell) Script 란? (0) | 2023.01.20 |
03.[Linux] 쉘(shell)과 Rules 2 (0) | 2023.01.19 |