본문 바로가기
CS/Shell scripts

[csh] cshell 에서의 for문 ( 반복문 ) 사용 방법

by Warehaus 2021. 6. 11.

리눅스 환경에서 시스템을 운영하거나 개발하다보면 Shell script 사용은 거의 필수적이라고 할 수 있다.

어느정도 익숙해져서 바로바로 사용할 때가 대부분이지만 Bash / Csh 을 옮겨다니면서 사용하다보니 에러를 뱉어서 다시한번 찾아보게 되는 경우가 종종 있다.

더 이상 찾아보지 않기 위해서 내 방식대로 정리를 해 보려 한다.

foreach

우선 foreach 문 부터 사용해보면 

#!/usr/bin/csh

# forloop.csh
foreach c ( 1 2 3 4 5 ) 
echo $c
end

실행하면 아래와 같은 결과를 얻는다.

1
2
3
4
5

 

반응형

 

 

while

while문은 아래와 같이 사용 가능하다.

#!/usr/bin/csh

# while.csh

set i = 1
while ( $i <= 5 )
    echo $i
    @ i += 1
end

csh 에서 숫자연산을 하기 위해서는 변수 앞에 '@' 를 써 준다.
아래와 같이 1씩 증가하면서 i 값을 출력하는 결과를 볼 수 있다.

1
2
3
4
5

 

자 그럼 이런 루프를 이용해서 무슨 일들을 할 수 있을까? 보통 회사에서 하는 일들을 이런 것들이다.

우선 접속해야 하는 장비 리스트 파일이 있다. 파일명은 hosts로 하자.

host1
host2
host3
host4
host5
host6
host7

이 장비리스트의 tmp 디렉토리에서 파일을 지운다거나, 특정 쉘 스크립트를 실행해야 한다고 했을때 아래와 같이 스크립트 작성이 가능하다.

#!/usr/bin/csh

foreach c ( `cat hosts`) 
    ssh $c rm -rf /tmp/*
end

hosts 파일을 cat 하면 host1 부터 host7까지 리스트가 만들어질테고, 이 output을 foreach문으로 순회하면서 ssh 접속,  /tmp 디렉토리 안의 내용들을 삭제할 수 있게 된다.

이런 삭제 명령어는... 예시일 뿐이다. 두번 세번 조심하자.