본문 바로가기
★━Server OS〃/1. Linux

쉘 스크립트 정리

by Raynee 2022. 3. 28.
반응형

보통의 OS의 경우 대부분 Bash Shell이 기본 Shell이라 bash 기준으로 작성 하면 대부분 잘 작동 한다. 

쉡스크립트는 변수, 반복문, 제어문 등의 사용이 가능하며 별도의 컴파일 없이 파일 형태로 바로 실행이 가능하다. 

 

 VI 편지기를 이용하여 쉘스크립트를 만들 수 있으며 확장자명은 알기 쉽게 .sh 로 작성 한다. 

 

쉘스크립트 실행 방법

쉘스크립트의 실행 방법은 크게 2가지 이다. 

  1. sh 명령어를 통해 실행방법 이다. 파일 권한에 실행이 없어도 실행 가능.
  2. 파일 권한에 실행 권한이 있는 경우.
##### 1. sh 명령어로 쉘스크립트 실행
[root@linux ~]# ll hello.sh
-rw-r--r-- 1 root root 102 2022-03-27 13:42 hello.sh

[root@linux ~]# cat hello.sh
#!/bin/sh
echo "사용자이름 :" $USER
echo "홈디렉토리 :" $HOME
echo "현재 시간 :" $(date)

[root@linux ~]# sh hello.sh
사용자이름 : root
홈디렉토리 : /root
현재 시간 : 2022. 03. 27. (일) 13:43:30 EDT

##### 2. 실행 권한이 있는 경우 실행
[root@linux ~]# chmod +x hello.sh

[root@linux ~]# ll hello.sh
-rwxr-xr-x 1 root root 102 2022-03-27 13:42 hello.sh

[root@linux ~]# ./hello.sh
사용자이름 : root
홈디렉토리 : /root
현재 시간 : 2022. 03. 27. (일) 13:43:47 EDT

 

변수 선언

변수는 선언이 가능하며 모든 변수는 문자열로 취급하며 대소문자를 구별한다. 

$를 하려면 '$'나 \$로 해줘야 문자로 인식 한다.

[root@linux ~]# cat name.sh
#!/bin/sh
name="Min Su"    #### 변수 선언
echo $name       #### 변수 출력
echo "$name"     #### 변수 출력
echo '$name'     #### 문자열 $name 출력
echo \$name      #### 문자열 $name 출력
echo 당신의 이름은?     #### 문자열 당신의 이름은? 출력
read name               #### name에 입력한 값 선언
echo 나의 이름은 $name 입니다.     #### 입력한 값 출력
echo 나의 이름은 '$name' 입니다.     #### 문자열 출력

[root@linux ~]# sh name.sh
Min Su
Min Su
$name
$name
당신의 이름은?
Losa
나의 이름은 Losa 입니다.
나의 이름은 $name 입니다.

숫자 변수 선언

변수에 들어가는 값은 숫자 

수식에 괄호 또는 곱하기는 그 앞에 역슬래쉬(\)를 꼭 붙임.

*연산자 마다 띄워 쓰기 해야함. 안그럼 오류남

[root@linux ~]# cat num.sh
#!/bin/sh
num1=12345         #### 12345 변수 선언
num2=$num1+1111    #### 문자열로 인식 띄워쓰기 하면 오류남
echo $num1
echo $num2
num3=`expr $num1 + 1111`    #### + 연산 + 앞뒤로 띄워 쓰기 해야함
echo $num3
num4=`expr \( $num1  + 12345 \) \* 1 / 2`  #### 각연자자 마다 띄워쓰기
echo $num4

[root@linux ~]# sh num.sh
12345
12345+1111
13456
12345

 

파라미터 변수 

파라미터 변수는 $0, $1, $2 ... 등 의 형태를 가졌고 전체 파라미터는 $*로 표시

[root@linux ~]# cat para.sh
#!/bin/sh
echo "파라마티 값 : $0"
echo "파라마티 값 : $1"
echo "파라마티 값 : $2"
echo "파라마티 값 : $3"
echo "전체 값 : $*"

[root@linux ~]# sh para.sh 1 2 3 4
파라마티 값 : para.sh
파라마티 값 : 1
파라마티 값 : 2
파라마티 값 : 3
전체 값 : 1 2 3 4
반응형

댓글