반응형
[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 출력 명령어로 출력합니다
반응형
그리드형
'IT > 리눅스 쉘 스크립트' 카테고리의 다른 글
[shell script] 쉘 스크립트 기초 #6 - 반복문 for문 개념 및 사용법 (0) | 2022.05.10 |
---|---|
[shell script] 쉘 스크립트 기초 #5 - 조건문 if문 옵션 사용법 및 총정리 (0) | 2022.04.27 |
[shell script] 쉘 스크립트 기초 #4 - 조건문 if문 개념 규칙 및 문법 (0) | 2022.04.26 |
[shell script] 쉘 스크립트 기초 #2, 기초 문법 - 변수 선언, 변수 호출 (0) | 2022.04.09 |
[shell script #1] 리눅스 쉘 스크립트 실행 sh 파일 만들기 (0) | 2022.04.07 |
댓글