1. 파라미터 변수
파라미터 변수는 $0, $1...의 형태이며 실행하는 명령의 각 부분을 변수로 지정한다는
의미입니다.
예를 들어 apt-get install mc 라는 명령어가 있다면
$0에는 apt-get, $1에는 install, $2에는 mc가 저장됩니다.
명령 전체의 파라미터 변수는 $*로 표시합니다.
리눅스에서 터미널을 실행하고 sudo vi pa.sh 를 실행합니다.
그 후 다음 명령어를 입력합니다.
#!/bin/sh
echo "실행파일: <$0>"
echo "첫번째 파라미터: <$0>"
echo "두번째 파라미터: <$0>"
echo "전체 파라미터: <$*>"
exit 0
pa.sh는 $0에 저장되며 parameter는 $1, test는 $2에 저장됩니다.
$*을 하면 전체 파라미터인 parameter test가 출력됩니다.
2. 조건문
기본 if문은 if [ 조건 ] then fi와 같은 형식으로 작성합니다.
조건 안의 각 단어 사이에 공백이 있어야 합니다.
sudo vi shell_if.sh를 실행하고 다음 명령어를 입력합니다.
#! /bin/sh
if [ "linux" = "linux" ]
then
echo "True"
fi
exit 0
2행 if문의 대괄호 안에는 참과 거짓을 구분하는 조건식이 들어갑니다.
"="는 값이 같은지 비교하고 만약 참이면 then 아래 있는 echo문을 출력합니다.
위 코드에는 조건이 참이기 때문에 True를 출력합니다.
리눅스에서 if else는 아래와 같이 작성합니다.
#! /bin/sh
if [ "linux" = "window" ]
then
echo "True"
else
echo "False"
fi
exit 0
위 코드는 거짓을 반환하므로 else아래 있는 echo문인 False를 반환합니다.
조건문에서는 문자열 비교와 산술 비교가 가능합니다.
조건문의 비교 연산자는 다음과 같습니다.
- "문자열1 = 문자열2": 두 문자열이 같으면 참
- "문자열1 != 문자열2": 두 문자열이 다르면 참
- "-n 문자열": 문자열이 NULL이 아니면 참
- "-z 문자열": 문자열이 NULL이면 참
- "수식1 -eq 수식2": 두 수식(또는 변수)이 같으면 참
- "수식1 -ne 수식2": 두 수식(또는 변수)이 같지 않으면 참
- "수식1 -gt 수식2": 수식 1이 크면 참
- "수식1 -ge 수식2": 수식1이 크거나 같으면 참
- "수식1 -lt 수식2": 수식1이 작으면 참
- "수식1 -le 수식2": 수식1이 작거나 같으면 참
- "!수식": 수식이 거짓이면 참
문자열과 산술 외에도 파일 관련 조건을 지정할 수 있습니다.
파일 관련 조건은 다음과 같습니다.
- "-d 파일명": 파일이 디렉터리면 참
- "-e 파일명": 파일이 존재하면 참
- "-f 파일명": 파일이 일반 파일이면 참
- "-g 파일명": 파일에 set-group-id가 설정되면 참
- "-r 파일명": 파일이 읽기 가능이면 참
- "-s 파일명": 파일 크기가 0이 아니면 참
- "-u 파일명": 파일에 set-user-id가 설정되면 참
- "-w 파일명": 파일이 쓰기 가능이면 참
- "-x 파일명": 파일이 실행 가능이면 참
sudo vi file_if.sh를 실행하고 아래 코드를 작성합니다.
#! /bin/sh
filenm=/lib/systemd/system/cron.service
if [ -f $filenm ]
then
head -3 $filenm
else
echo "failed"
fi
exit 0
-f는 파일이 일반 파일일 때 참을 반환하는 조건입니다.
cron.service는 일반 파일이므로 then아래 있는 head 명령어를 실행합니다.
if문 외에도 case esac문이 있는데,
if문은 참과 거짓 두 가지 경우에만 사용하는 반면
case문은 경우의 수가 셋 이상 가능합니다.
sudo vi case1.sh를 실행하고 아래 코드를 작성합니다.
#! /bin/sh
case "$1" in
start)
echo "start";;
stop)
echo "stop";;
restart)
echo "restart";;
*)
echo "";;
esac
exit 0
case는 조건문이 끝날 때 항상 세미콜론을 넣어줘야 합니다.
조건) 실행할 코드 와 같이 구성되어 있으며, " * "은 if문의 else처럼 동작합니다.
조건문에서 관계 연산자는 다음과 같습니다.
- And: -a 또는 &&
- Or: -o 또는 ||
또한 정규표현식을 사용해 [nN]*처럼 특정 문자가 들어간 모든 단어를
참으로 반환할 수 있습니다.
'리눅스' 카테고리의 다른 글
[linux] 리눅스 쉘 스크립트 반복문 (1) | 2023.11.13 |
---|---|
[linux] 리눅스 원격 접속 서버 (0) | 2023.10.30 |
[linux] 리눅스 셸 스크립트 (2) | 2023.09.19 |
[linux] 리눅스 디스크 관리 시스템 (0) | 2023.09.12 |
[linux] 리눅스 패키지 관리 (0) | 2023.09.05 |