본문 바로가기

Linux/쉘스크립트

5. 루프

1. sh 스타일의 for 문

for arg in [list]
do 
    command... 
done


2. C 언어 스타일의 for 문

for (( 초기값; 비교; 증감치 ))
do
    참일 때 실행할 실행문
done



# for i in /etc /bin /root /home > do > echo "-- $i Directory --" > ls -ld $i > done -- /etc Directory -- drwxr-xr-x 84 root root 12288 May 1 04:02 /etc -- /bin Directory -- drwxr-xr-x 2 root root 4096 Apr 24 15:20 /bin -- /root Directory -- drwxr-x--- 11 root root 4096 May 1 02:48 /root -- /home Directory -- drwxr-xr-x 7 root root 4096 Apr 30 11:59 /home for (( 초기값; 비교; 증감치 )) do 참일 때 실행할 실행문 done - for 문 하나로 되어있는 단순 for문 형태 # for((j=5; i <= 5; i++)) > do > echo "i = $i , j = $j" > done i = 1 , j = 5 i = 2 , j = 5 i = 3 , j = 5 i = 4 , j = 5 i = 5 , j = 5 - for 문 안에 if 문이 들어갈 수 있는 예제 - 반복문 (for, while, until 문에서 break 를 만나면 반복문을 탈출한다.) # for i in 1 2 3 4 5 > do > if [ $i -eq 2 ]; then > break > fi > > echo $i > done 1 - for 문 안에 for 문이 들어간 예제 ( 이중 for문 ) - sh 형식의 이중 for문 # for i in 1 2 3 > do > for j in 1 2 3 > do > echo "i = $i, j = $j" > done > done i = 1, j = 1 i = 1, j = 2 i = 1, j = 3 i = 2, j = 1 i = 2, j = 2 i = 2, j = 3 i = 3, j = 1 i = 3, j = 2 i = 3, j = 3 - for 문 안에 for 문이 들어간 예제 ( 이중 for문 ) - C 스타일의 이중 for문 여러분이 직접 코드를 작성해서 아래 결과를 출력하세요. i = 1, j = 1 i = 1, j = 2 i = 1, j = 3 i = 2, j = 1 i = 2, j = 2 i = 2, j = 3 i = 3, j = 1 i = 3, j = 2 i = 3, j = 3


=====================================================================
LAB> 아래 출력 결과에 대한 소스를 작성하시오.

-- 조건 --
1. 이중 for 문을 이용할 것
2. sh 스타일과 C 스타일로 작성할 것
- C 스타일의  파일명 : gugudan.sh
- sh 스타일의 파일명 : gugudan2.sh
-- 조건 --

-- 출력 결과 --
2 x 1 = 2   3 x 1 = 3   4 x 1 = 4
2 x 2 = 4   3 x 2 = 6   4 x 2 = 8
2 x 3 = 6   3 x 3 = 9   4 x 3 = 12
  :           :           :
  :           :           :
2 x 9 = 18  3 x 9 = 27  4 x 9 = 36
-- 출력 결과 --

-- gugudan.sh --
#!/bin/sh
for((i=1; i <= 9; i++))
do
  for((j=2; j <= 4; j++))
  do
    res=$((j * i))
    printf "$j x $i = $res\t"
  done
    echo 
done
-- gugudan.sh --

-- gugudan2.sh --
#!/bin/sh
for i in `seq 9`
do
  for j in `seq 2 4`
  do
    res=$((j * i))
    printf "$j x $i = $res\t"
  done
    echo 
done
-- gugudan2.sh --
=====================================================================

=====================================================================
LAB> 아래 출력 결과에 대한 소스를 작성하시오.

-- 조건 --
1. 이중 for문을 이용할 것
2. sh 스타일과 C 스타일로 작성할 것
- C 스타일의  파일명 : star.sh
- sh 스타일의 파일명 : star2.sh
-- 조건 --


-- 출력 결과 --
*
**
***
****
*****
-- 출력 결과 --

-- star.sh --
#!/bin/sh 

for((i=1; i<=5; i++))
do
  for((j=1; j<=i; j++))
  do
    printf '*'
  done
  echo 
done
-- star.sh --

-- star2.sh --
sh 스타일은 여러분들이 직접 짜보세요!!!
-- star2.sh --
=====================================================================


'Linux > 쉘스크립트' 카테고리의 다른 글

내부 변수(Internal Variables)  (0) 2015.05.12
until과 위치 매개변수 사용  (0) 2015.05.11
4. 테스트와 분기(Testing and Branching)  (0) 2015.05.04
3. 비교 연산자(이진)  (0) 2015.05.04
2. 파일 테스트 연산자  (0) 2015.05.04