language/shell script

[리눅스] shell에서 간단한 루프돌리기 (for문)

alignG 2009. 7. 31. 11:45


먼져 간단히 파일을 열어서 스크립트를 만들어 보자

명령
# vi loop

코드 : 모든 쉘스크립트(bash kon cshell ..)에서 주석은 #이다
#!/bin/bash #이 스크립트를 실행시킬 프로그램

for x in 1 2 3 4 5 # 루프를 한번돌때마다 x에 각 각의 숫자를 대입한다
do # for루프가 실행될것이라는 것을 알린다
    echo "now $x" # echo는 화면에 출력해주는 명령어다 고로 now 와 $x라는 변수의 값을 찍어주겟다는 의미
done #루프가 종료됨을 표시

실행 : 실행권한이 있어야 스크립트를 실행시킬수 있으므로 실행권한을 준다
# chmod +x loop
# ./loop

결과
now 1
now 2
now 3
now 4
now 5

2번째 예제

명령
# vi loop2

코드 : 모든 쉘스크립트(bash kon cshell ..)에서 주석은 #이다
#!/bin/bash #이 스크립트를 실행시킬 프로그램

for x in `cat /etc/passwd/` #위의 예제와는 달리 명령어의 결과 값이 줄단위로
do # for루프가 실행될것이라는 것을 알린다
    echo "now $x" # echo는 화면에 출력해주는 명령어다 고로 now 와 $x라는 변수의 값을 찍어주겟다는 의미
done #루프가 종료됨을 표시
추가설명
위에서 `cat /etc/passwd`가 ''나 ""이 아님에 유의하라 그것으로 적을경우 그저 문자로 인식한다. /etc/passwd에는 유져리스트가 있으므로 그것을 한줄씩읽어와서 $x라는 변수에 대입하게 될것이다.

실행 : 이번에는 명령어를 직접주어서 돌리는 방식을 택했다 실행권한이 없어서 스크립트 가실행되는게 아니라 bash라는 프로그램으로 실행되는 것이므로 bash프로그램에만 실행권한이 있으면 된다.
# bash loop

결과
now root:x:0:0:root:/root:/bin/bash
now daemon:x:1:1:daemon:/usr/sbin:/bin/sh
now bin:x:2:2:bin:/bin:/bin/sh
now sys:x:3:3:sys:/dev:/bin/sh
.
.
.


for문은 여러모로 쓸곳이 많은 녀석이다 굳이 스크립트를 열지 않터라도 쉘에서 직접 다음과 같이 입력해서 사용할수 있다

# for x in 1 2 3 4 5
> do
> echo "$x"
> done
1
2
3
4
5

또는 한줄에 써서 다음과 같은 형식도 된다

 # for x in 1 2 3 4 ;do  echo $x; done
1
2
3
4
5


for문은 이외에도 많은 활용도가 있습니다. 추후에 좀더 추가적인 기능도 여기에 적어 보겟습니다.
반응형