[cmd_test@btjeon-naver ~]$ vi case_menu.sh
---------------------------------------------------------------------------------------
#!/bin/bash
# case_menu: a menu driven system information program
clear
echo "
Please Select:
1. Display System Information
2. Display Disk Space
3. Display Home Space Utilization
0. Quit
"
read -p "Enter selection [0-3] > "
case $REPLY in
0) echo "Program terminated."
exit
;;
1) echo "Hostname: $HOSTNAME"
uptime
;;
2) df -h
;;
3) if [[ $(id -u) -eq 0 ]]; then
echo "Home Space Utilization (All Users)"
du -sh /home/*
else
echo "Home Space Utilization ($USER)"
du -sh $HOME
fi
;;
*) echo "Invalid entry." >&2
exit 1
;;
esac
---------------------------------------------------------------------------------------
Please Select:
1. Display System Information
2. Display Disk Space
3. Display Home Space Utilization
0. Quit
Enter selection [0-3] > 1
Hostname: btjeon-naver
06:19:25 up 23 days, 13:32, 2 users, load average: 0.06, 0.03, 0.05
case 문을 사용한 메뉴 예제 (좀 더 간단해짐.)
<case 패턴 예제>
패턴 | 설명 |
a) | a와 일치하는 단어 |
[[:alpha:]]) | 하나의 알파벳 문자와 일치하는 단어 |
???) | 정확히 세 글자로 이루어진 단어 |
*.txt) | .txt 문자열로 끝나는 단어 |
*) | 모든 단어. 이는 case 문의 마지막 패턴으로 사용된다. 앞선 패턴에서 일치하는 게 없는 단어를 처리하기 위해 사용된다. 즉 유효하지 않은 값을 처리하기 위해 사용된다. |
[cmd_test@btjeon-naver ~]$ vi case_example.sh
------------------------------------------------------------------------------------------
#!/bin/bash
read -p "Enter word > "
case $REPLY in
[[:alpha:]]) echo "is a single alphabetic character." ;;
[ABC][0-9]) echo "is A, B or C folowed by a digit." ;;
???) echo "is three characters long." ;;
*.txt) echo "is a word ending in '.txt'" ;;
*) echo "is something else." ;;
esac
------------------------------------------------------------------------------------------
[cmd_test@btjeon-naver ~]$ ./case_example.sh
Enter word > d
is a single alphabetic character.
[cmd_test@btjeon-naver ~]$ ./case_example.sh
Enter word > C8
is A, B or C folowed by a digit.
[cmd_test@btjeon-naver ~]$ ./case_example.sh
Enter word > 444
is three characters long.
[cmd_test@btjeon-naver ~]$ ./case_example.sh
Enter word > ddd.txt
is a word ending in '.txt'
[cmd_test@btjeon-naver ~]$ ./case_example.sh
Enter word > 88
is something else.
case 패턴 예제
[cmd_test@btjeon-naver ~]$ vi case_menu2.sh
---------------------------------------------------------------------------------------------
#!/bin/bash
# case_menu: a menu driven system information program
clear
echo "
Please Select:
A. Display System Information
B. Display Disk Space
C. Display Home Space Utilization
Q. Quit
"
read -p "Enter selection [A, B, C or Q] > "
case $REPLY in
q|Q) echo "Program terminated."
exit
;;
a|A) echo "Hostname: $HOSTNAME"
uptime
;;
b|B) df -h
;;
c|C) if [[ $(id -u) -eq 0 ]]; then
echo "Home Space Utilization (All Users)"
du -sh /home/*
else
echo "Home Space Utilization ($USER)"
du -sh $HOME
fi
;;
*) echo "Invalid entry." >&2
exit 1
;;
esac
---------------------------------------------------------------------------------------------
[cmd_test@btjeon-naver ~]$ ./case_menu2.sh
Please Select:
A. Display System Information
B. Display Disk Space
C. Display Home Space Utilization
Q. Quit
Enter selection [A, B, C or Q] > A
Hostname: btjeon-naver
06:22:58 up 24 days, 13:36, 1 user, load average: 0.00, 0.01, 0.05
[cmd_test@btjeon-naver ~]$ ./case_menu2.sh
Please Select:
A. Display System Information
B. Display Disk Space
C. Display Home Space Utilization
Q. Quit
Enter selection [A, B, C or Q] > a
Hostname: btjeon-naver
06:23:28 up 24 days, 13:36, 1 user, load average: 0.00, 0.01, 0.05
case 패턴 결합 예제 -> OR 조건 (|)
출처 : 리눅스 커맨드라인 완벽 입문서
'IT일반 > Linux' 카테고리의 다른 글
Command Line - 흐름 제어 : for 루프 (0) | 2022.06.13 |
---|---|
Command Line - 위치 매개변수 (0) | 2022.06.08 |
Command Line - 문제 해결 (0) | 2022.06.06 |
Command Line - 흐름 제어 : While 루프와 Until 루프 (0) | 2022.06.06 |
Command Line - 키보드 입력 읽기 (0) | 2022.06.06 |