본문 바로가기
IT/리눅스 쉘 스크립트

[shell script] 쉘 스크립트 기초#3, 기초 예제 - 변수 사용 예제

by 꾸꾸웍스 2022. 4. 18.
반응형

[shell script] 쉘 스크립트 기초 예제 - 변수 사용 예제



※ 목차

1. 변수 할당 - 숫자 활용 예제
2. 변수 할당 - 문자 활용 예제
3. 변수 할당 - 명령어 활용 예제

 


1. 변수 할당 - 숫자 예제

변수를 숫자로 활용하여 자주 사용하는 예
  • 숫자로 변수를 사용 할 때는 기준을 정할 때 사용 될 수 있습니다.
### 숫자가 80과 같은지 조건 검사하는 스크립트

[ server 2022-04-18 09:54:58 ] ~/testdir
user@server # ls -l
total 4
-rwx------ 1 user user 104 Apr 18 09:54 test_script.sh

### 숫자가 80일 때는 equal을 출력
[ server 2022-04-18 09:54:59 ] ~/testdir
user@server # cat -n test_script.sh
     1  #!/bin/bash
     2
     3  STANDARD_NUM=80
     4
     5  if [ $STANDARD_NUM -eq 80 ]; then
     6          echo "equal"
     7  else
     8          echo "Not equal"
     9  fi

### 스크립트를 실행한 결과
[ server 2022-04-18 09:55:02 ] ~/testdir
user@server # ./test_script.sh
equal

--------------------------------------------------------------------------
### 숫자가 60일 때는 Not equal을 출력
[ server 2022-04-18 09:55:27 ] ~/testdir
user@server # cat -n test_script.sh
     1  #!/bin/bash
     2
     3  STANDARD_NUM=60
     4
     5  if [ $STANDARD_NUM -eq 80 ]; then
     6          echo "equal"
     7  else
     8          echo "Not equal"
     9  fi

### 스크립트를 실행 한 결과
[ server 2022-04-18 09:55:30 ] ~/testdir
user@server # ./test_script.sh
Not equal
  • test_script.sh 스크립트에는 총 9줄의 내용이 작성되어 있습니다
  • 1번줄은 스크립트 내용의 bash쉘을 사용 하겠다는 선언입니다
  • 3번째 줄은 변수이름을 STANDARD_NUM으로 대문자로 선언하고 값을 숫자 80으로 선언하였습니다
  • 5번째 줄은 변수 STANDARD_NUM와 80이 서로 같은지(-eq) 조건을 검사합니다
    (같은지, 작은지, 큰지, 작거나 같은지, 크거나 같은지 등등.. 조건을 여러가지로 사용가능)
  • 6번째 줄은 5번째 줄의 조건이 참이면 출력명령어 echo를 사용하여 equal을 출력합니다
  • 7번째 줄은 5번째 줄의 조건이 거짓일때 참의 조건을 무시하고 다음단계로 넘어갑니다
  • 8번째 줄은 5번째 줄의 조건이 거짓이여서 출력명령어 echo를 사용하여 Not equal을 출력합니다
  • 9번째 줄은 if문의 종료를 선언합니다. (if 글씨를 반대로 작성하여 종료 선언)

 


  • 숫자로 변수를 사용 할 때는 수식계산 및 수식값 증가로 사용 할 수 있습니다.
### 총 9줄의 수식계산하는 스크립트
[ server 2022-04-18 10:15:29 ] ~/testdir
user@server # ls -l
total 4
-rwx------ 1 user user  73 Apr 18 10:15 test_script.sh

### 스크립트 내용
[ server 2022-04-18 10:15:30 ] ~/testdir
user@server # cat -n test_script.sh
     1  #!/bin/bash
     2
     3  FIRST=10
     4  SECOND=20
     5
     6  expr $FIRST + $SECOND

### 스크립트 실행
[ server 2022-04-18 10:15:33 ] ~/testdir
user@server # ./test_script.sh
30
  • 1번줄은 스크립트 내용의 bash쉘을 사용 하겠다는 선언입니다
  • 3번째 줄은 FIRST 변수이름으로 숫자 10으로 선언하였습니다
  • 4번째 줄은 SECOND 변수이름으로 숫자 20을 선언하였습니다
  • 6번째 줄은 expr 명령어를 사용해 변수 FIRST와 SECOND의 값을 서로 더하는 명령입니다.
    (위 예제는 두 수의 값을 더하는 '+'들어 갔지만 빼기, 곱하기, 나누기 등등.. 사용 가능합니다)

 

 

 

### for문을 활용한 숫자값 계산하여 증가 시키는 스크립트
[ server 2022-04-18 10:24:39 ] ~/testdir
user@server # ls -l
total 4
-rwx------ 1 user user 88 Apr 18 10:24 test_script.sh

### 스크립트 내용
[ server 2022-04-18 10:24:40 ] ~/testdir
user@server # cat -n test_script_bk.sh
     1  #!/bin/bash
     2
     3  SUC_C=0
     4
     5  for CN in `seq 1 10`
     6  do
     7          SUC_C=$((SUC_C+$CN))
     8  done
     9
    10  echo "$SUC_C"

### 스크립트 실행 결과
[ server 2022-04-18 10:24:43 ] ~/testdir
user@server # ./test_script_bk.sh
55​
  • 1번줄은 스크립트 내용의 bash쉘을 사용 하겠다는 선언입니다
  • 3번째 줄은 SUC_C 변수이름으로 숫자 0으로 선언하였습니다
  • 5번째 줄은 for문(반복문)으로 CN변수 이름으로 선언하고 1부터 10까지 seq 명령어로 출력하게 선언하였습니다
  • 6번째 줄은 for문의 문법으로 do를 작성합니다
  • 7번째 줄은 '0+1' + '1+2' + '3+3' + ... '45+10' 까지 반복합니다
    (SUC_C는 0으로 시작하고 CN 변수가 1부터 10까지 증가하며 값을 누적하며 값을 더합니다)
  • 8번째 줄은 for문의 종료 선언을 합니다
  • 10번째 줄은 echo 출력명령어로 SUC_C의 변수의 값을 출력합니다

 

2. 변수 할당 - 문자 활용 예제

변수를 문자로 활용하여 자주 사용하는 예
(문자 변수 선언에는 큰따옴표 " 가 들어갑니다)
  • 문자로 변수를 사용 할 때는 디렉토리 경로를 사용 할 수 있습니다.
### 디렉토리 목록을 보는 스크립트 파일
[ server 2022-04-18 11:26:44 ] ~/testdir
user@server # ls -l
total 4
-rwx------ 1 user user 34 Apr 18 11:26 test_script_bk.sh

### 스크립트 내용
[ server 2022-04-18 11:26:45 ] ~/testdir
user@server # cat -n test_script_bk.sh
     1  #!/bin/bash
     2
     3  DIR="/home"
     4
     5  ls $DIR

### 스크립트 실행
[ server 2022-04-18 11:26:50 ] ~/testdir
user@server # ./test_script_bk.sh
apple  banana  user  testdir  usergroup

 

 

  • 1번줄은 스크립트 내용의 bash쉘을 사용 하겠다는 선언입니다
  • 3번째 줄은 DIR이라는 변수이름으로 "/home" 문자로 선언했습니다
  • 5번째 줄은 ls 명령어로 DIR 변수를 호출해 /home 디렉토리의 목록을 출력 합니다

 

 

  • 문자로 변수를 사용 할 때는 기준을 정할 때 사용 될 수 있습니다.
### 특정 문자의 조건을 검사하는 스크립트
[ server 2022-04-18 11:33:28 ] ~/testdir
user@server # ls -l
total 4
-rwx------ 1 user user 97 Apr 18 11:33 test_script_bk.sh

### 참의 조건 스크립트 내용
[ server 2022-04-18 11:33:29 ] ~/testdir
user@server # cat -n test_script_bk.sh
     1  #!/bin/bash
     2
     3  CHECK="active"
     4
     5  if [ "$CHECK" == "active" ]; then
     6          echo "Ok"
     7  else
     8          echo "Not ok"
     9  fi

### 스크립트 실행
[ server 2022-04-18 11:33:31 ] ~/testdir
user@server # ./test_script_bk.sh
Ok

----------------------------------------------------------------

### 거짓의 조건 스크립트 내용
[ server 2022-04-18 11:34:27 ] ~/testdir
user@server # cat -n test_script_bk.sh
     1  #!/bin/bash
     2
     3  CHECK="apple"
     4
     5  if [ "$CHECK" == "active" ]; then
     6          echo "Ok"
     7  else
     8          echo "Not ok"
     9  fi

### 스크립트 실행
[ server 2022-04-18 11:34:29 ] ~/testdir
user@server # ./test_script_bk.sh
Not ok

 

  • 1번줄은 스크립트 내용의 bash쉘을 사용 하겠다는 선언입니다
  • (참)3번째 줄은 변수이름을 CHECK으로 대문자로 선언하고 값을 active로 선언하였습니다
    (거짓) 3번째 줄은 변수이름을 CHECK으로 대문자로 선언하고 값을 apple로 선언하였습니다
  • 5번째 줄은 변수 CHECK 값과 active가 서로 같은지 조건을 검사합니다
  • 6번째 줄은 5번째 줄의 조건이 참이면 출력명령어 echo를 사용하여 ok을 출력합니다
  • 7번째 줄은 5번째 줄의 조건이 거짓일때 참의 조건을 무시하고 다음단계로 넘어갑니다
  • 8번째 줄은 5번째 줄의 조건이 거짓이여서 출력명령어 echo를 사용하여 Not ok을 출력합니다
  • 9번째 줄은 if문의 종료를 선언합니다. (if 글씨를 반대로 작성하여 종료 선언)

3. 변수 할당 - 명령어 활용 예제

변수를 명령어로 활용하여 자주 사용하는 예
(명령어를 사용하는 변수는 사용 목적에 따라 경우에 수가 많기 때문에 몇 가지 예로 설명)
(또한 명령어를 변수로 지정할 때 ` 기호를 사용)
  • 명령어를 변수에 넣고 출력
### 특정 디렉토리의 목록을 보는 스크립트 파일
[ server 2022-04-18 12:10:45 ] ~/testdir
user@server # ls -l
total 4
-rwx------ 1 user user 58 Apr 18 12:10 test_script_bk.sh

### 스크립트 내용
[ server 2022-04-18 12:10:49 ] ~/testdir
user@server # cat -n test_script_bk.sh
     1  #!/bin/bash
     2
     3  DIR="/home"
     4
     5  LIST=`ls $DIR`
     6
     7  echo "$LIST"

### 스크립트 실행
[ server 2022-04-18 12:10:51 ] ~/testdir
user@server # ./test_script_bk.sh
apple 
banana 
user 
testdir 
usergroup
  • 1번줄은 스크립트 내용의 bash쉘을 사용 하겠다는 선언입니다
  • 3번째 줄은 문자 변수 선언으로 /home 내용이 DIR 변수에 저장됩니다
  • 5번째 줄은 DIR에 저장된 문자(/home 경로)를 ls 명령어로 값을 치환 후 LIST 변수에 저장 됩니다
  • 7번째 줄은 LIST에 저장된 값을 echo 출력 명령어로 출력됩니다

  • low data를 한번에 담고 여러 변수를 활용하여 치환 할때 사용 할 수 있습니다
### 특정 사용자의 프로세스를 출력하는 스크립트
[ server 2022-04-18 12:18:36 ] ~/testdir
user@server # ls -l
total 4
-rwx------ 1 user user 149 Apr 18 12:18 test_script_bk.sh

### 스크립트 내용
[ server 2022-04-18 12:18:37 ] ~/testdir
user@server # cat -n test_script_bk.sh
     1  #!/bin/bash
     2
     3  PROCESS=`ps -elf`
     4
     5  ROOT=`echo "$PROCESS" | grep root | head -1`
     6  USER=`echo "$PROCESS" | grep user | head -1`
     7
     8  echo "$ROOT"
     9  echo "$USER"

### 스크립트 실행 결과
[ server 2022-04-18 12:18:42 ] ~/testdir
user@server # ./test_script_bk.sh
4 S root          1      0  0  80   0 - 47820 ep_pol  2021 ?        00:40:02 /usr/lib/systemd/systemd
0 S user    3856 102173  0  80   0 - 27014 hrtime 12:18 ?        00:00:00 sleep 1
  • 1번줄은 스크립트 내용의 bash쉘을 사용 하겠다는 선언입니다
  • 3번째 줄은 ps -elf의 명령의 전체 결과를 PROCESS 변수에 저장합니다
  • 5번째 줄은 root사용자의 프로세스의 첫번째 줄을 출력하기 위해 PROCESS 변수 내용을 호출하여 root사용자만
    추출하고 head 명령어로 첫번째 줄만 저장한 내용을 ROOT 변수에 저장합니다
  • 7번째 줄은 user사용자의 프로세스의 첫번째 줄을 출력하기 위해 PROCESS 변수 내용을 호출하여 user사용자만
    추출하고 head 명령어로 첫번째 줄만 저장한 내용을 USER 변수에 저장합니다
  • 8번째 줄은 ROOT 변수의 내용을 echo 출력 명령어로 출력합니다
  • 9번째 줄은 USER 변수의 내용을 echo 출력 명령어로 출력합니다

 


 

 

 

반응형
그리드형

댓글