리눅스 환경에서 시스템을 운영하거나 개발하다보면 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 디렉토리 안의 내용들을 삭제할 수 있게 된다.
이런 삭제 명령어는... 예시일 뿐이다. 두번 세번 조심하자.
저는 네이버 엑스퍼트에서 합리적인 가격으로 C++/ Python 관련한 코드문제를 해결해 드리고 있습니다. 관심이 있으시다면 상담요청을 진행 해 주세요. 요청하시는 일정 내 해결이 가능한 문제라면 최선을 다해 도움을 드리겠습니다.
'CS > Shell scripts' 카테고리의 다른 글
[Bash] 쉘 스크립트 출력 시 개행이 안되는 경우 해결방법 (0) | 2021.06.24 |
---|---|
Linux 명령어 'awk' 로 원하는 부분만 출력하기 - 1 (0) | 2021.06.24 |
[csh] c shell 에서 덧셈 구현 방법 (0) | 2021.06.16 |
Bash script 에서 사칙연산 구현하기 (0) | 2021.06.14 |
Bash script for loop 반복문 사용하기 (0) | 2021.06.14 |