[cmd_test@btjeon-naver ~]$ vi while_count.sh
---------------------------------------------------------------------------------------------
#!/bin/bash
# while-count: display a series of numbers
count=1
while (( $count <= 5 )); do
echo $count
count=$((count + 1))
done
echo "Finished."
---------------------------------------------------------------------------------------------
[cmd_test@btjeon-naver ~]$ ./while_count.sh
1
2
3
4
5
Finished.
while문 예제
[cmd_test@btjeon-naver ~]$ vi while_menu.sh
-----------------------------------------------------------------------------------------
#!/bin/bash
# while_menu: a menu driven system information program
DELAY=3 # Number of seconds to display results
while [[ $REPLY != 0 ]]; do
clear
cat <<- _EOF_
Please Select:
1. Display System Information
2. Display Disk Space
3. Display Home Space Utilization
0. Quit
_EOF_
read -p "Enter selection [0-3] > "
if [[ $REPLY =~ ^[[0-3]$ ]]; then
if [[ $REPLY == 1 ]]; then
echo "Hostname: $HOSTNAME"
uptime
sleep $DELAY
fi
if [[ $REPLY == 2 ]]; then
df -h
sleep $DELAY
fi
if [[ $REPLY == 3 ]]; then
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
sleep $DELAY
fi
else
echo "Invalid entry."
sleep $DELAY
fi
done
echo "Program terminated."
-----------------------------------------------------------------------------------------
[cmd_test@btjeon-naver ~]$ ./while_menu.sh
Please Select:
1. Display System Information
2. Display Disk Space
3. Display Home Space Utilization
0. Quit
Enter selection [0-3] > 0
Program terminated.
while 루프로 개선된 menu script 예제
[cmd_test@btjeon-naver ~]$ vi while_menu2.sh
-------------------------------------------------------------------------------------------
#!/bin/bash
# while_menu2: a menu driven system information program
DELAY=3 # Number of seconds to display results
while true; do
clear
cat <<- _EOF_
Please Select:
1. Display System Information
2. Display Disk Space
3. Display Home Space Utilization
0. Quit
_EOF_
read -p "Enter selection [0-3] > "
if [[ $REPLY =~ ^[[0-3]$ ]]; then
if [[ $REPLY == 1 ]]; then
echo "Hostname: $HOSTNAME"
uptime
sleep $DELAY
continue
fi
if [[ $REPLY == 2 ]]; then
df -h
sleep $DELAY
continue
fi
if [[ $REPLY == 3 ]]; then
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
sleep $DELAY
continue
fi
if [[ $REPLY == 0 ]]; then
break
fi
else
echo "Invalid entry."
sleep $DELAY
fi
done
echo "Program terminated."
-------------------------------------------------------------------------------------------
continue, break 구문 사용 예제
[cmd_test@btjeon-naver ~]$ vi until_count.sh
-----------------------------------------------------------------------------------------
#!/bin/bash
# until-count: display a series of numbers
count=1
until (( $count > 5 )); do
echo $count
count=$((count + 1))
done
echo "Finished."
-----------------------------------------------------------------------------------------
[cmd_test@btjeon-naver ~]$ ./until_count.sh
1
2
3
4
5
Finished.
until문 예제
[cmd_test@btjeon-naver ~]$ vi while_read.sh
------------------------------------------------------------------------------------------
#!/bin/bash
# while-read: read lines from a file
while read distro version release; do
printf "Distro: %s\tVersion: %s\tReleased: %s\n" \
$distro \
$version \
$release
done < distros.txt
------------------------------------------------------------------------------------------
[cmd_test@btjeon-naver ~]$ ./while_read.sh
Distro: SUSE Version: 10.2 Released: 12/07/2006
Distro: Fedora Version: 10 Released: 11/25/2008
Distro: SUSE Version: 11.0 Released: 06/19/2008
Distro: Ubuntu Version: 8.04 Released: 04/24/2008
Distro: Fedora Version: 8 Released: 11/08/2007
Distro: SUSE Version: 10.3 Released: 10/04/2007
Distro: Ubuntu Version: 6.10 Released: 10/26/2006
Distro: Fedora Version: 7 Released: 05/31/2007
Distro: Ubuntu Version: 7.10 Released: 10/18/2007
Distro: Ubuntu Version: 7.04 Released: 04/19/2007
Distro: SUSE Version: 10.1 Released: 05/11/2006
Distro: Fedora Version: 6 Released: 10/24/2006
Distro: Fedora Version: 9 Released: 05/13/2008
Distro: Ubuntu Version: 6.06 Released: 06/01/2006
Distro: Ubuntu Version: 8.10 Released: 10/30/2008
Distro: Fedora Version: 5 Released: 03/20/2006
while 문을 이용한 파일 읽기 예제 (while 및 until 명령으로 표준 입력을 처리할 수 있다.)
[cmd_test@btjeon-naver ~]$ vi while_read2.sh
----------------------------------------------------------------------------------------------
#!/bin/bash
# while-read2: read lines from a file
sort -k 1,1 -k 2n distros.txt | while read distro version release; do
printf "Distro: %s\tVersion: %s\tReleased: %s\n" \
$distro \
$version \
$release
done
----------------------------------------------------------------------------------------------
[cmd_test@btjeon-naver ~]$ ./while_read2.sh
Distro: Fedora Version: 5 Released: 03/20/2006
Distro: Fedora Version: 6 Released: 10/24/2006
Distro: Fedora Version: 7 Released: 05/31/2007
Distro: Fedora Version: 8 Released: 11/08/2007
Distro: Fedora Version: 9 Released: 05/13/2008
Distro: Fedora Version: 10 Released: 11/25/2008
Distro: SUSE Version: 10.1 Released: 05/11/2006
Distro: SUSE Version: 10.2 Released: 12/07/2006
Distro: SUSE Version: 10.3 Released: 10/04/2007
Distro: SUSE Version: 11.0 Released: 06/19/2008
Distro: Ubuntu Version: 6.06 Released: 06/01/2006
Distro: Ubuntu Version: 6.10 Released: 10/26/2006
Distro: Ubuntu Version: 7.04 Released: 04/19/2007
Distro: Ubuntu Version: 7.10 Released: 10/18/2007
Distro: Ubuntu Version: 8.04 Released: 04/24/2008
Distro: Ubuntu Version: 8.10 Released: 10/30/2008
sort 적용 후 파일 읽기
출처 : 리눅스 커맨드라인 완벽 입문서
'IT일반 > Linux' 카테고리의 다른 글
Command Line - 흐름 제어 : Case 분기 (0) | 2022.06.07 |
---|---|
Command Line - 문제 해결 (0) | 2022.06.06 |
Command Line - 키보드 입력 읽기 (0) | 2022.06.06 |
Command Line - 흐름 제어 : if 분기 (0) | 2022.06.03 |
Command Line - 쉘 스크립트 기초 (0) | 2022.06.03 |