본문 바로가기
리눅스공부/셸 스크립트 프로그래밍

[프로그래밍] 반복문 for~in문 , while문 / 리눅스 셸 스크립트 프로그래밍

by 으노으뇨 2022. 12. 21.
728x90
반응형
SMALL

for ~ in 문

for ~ in 문은 다음 형식과 같이 변수에 각각의 값을 넣은 후 do 안에 있는

'반복할 문장'을 실행한다.

그러므로 값의 개수 만큼 반복 실행하게 된다.

for 변수 in 값1, 값2, 값3 ...
do
 반복한 문장
done

이렇게 진행된다.

for문을 하나 만들어보았다.
빠르게 for문을 돌아서 1~10의 합인 55를 출력했다.

소스설명

  • 2행 : 합계를 누적할 변수를 0으로 초기화 한다.
  • 3행 : i 변수에 1~10까지 반복해 넣으면서 5행을 10회 실행한다. 기존의 for문과 비슷하게 for ((i=0;i<=10;i++))로 변경해서 사용할 수 있다. (변경할 때 괄호가 2개인 것을 반드시 알아야 합니다.) 또 seq 명령을 사용할 수도 있습니다. 예를들어 seq 1 10은 1에서 10까지 숫자를 돌려줍니다.
  • 5행 : hsp에 i 변수의 값을 누적한다. (결국 1부터 10까지 계속 더한다). 

다음은 현재 디렉터리에 있는 셸 스크립트 파일 ( *. sh) 파일 이름과 앞에 3줄을 출력하는 프로그램이다.

스크립트를 작성해보았다.
실행했더니 그동안 작성한 스크립트들이 나왔다.

소스설명

  • 2행 : fname 변수에 ls *.sh 명령의 실행 결과를 하나씩 넣어서 4~5행을 반복한다. 즉, 파일 개수만큼 실행을 반복한다.
  • 4행 : 파일 이름을 출력한다.
  • 5행 : 파일의 앞에 3줄을 출력한다.

while 문

while문은 조건식이 참인 동안 계속 반복하는 특성을 가진다.

항상 참인 스크립트를 만들어보았다.
끝나지 않는 스크립트완성../.

소스설명 

  • 2행 : 조건식 위치에 [ 1 ] 또는 [ ; ] 이 오면 항상 참이다. 그러므로 4행을 무한히 반복 실행한다. 컨트롤 + C를 눌러 취소가능하다.

이번엔 1에서 10까지 합계를 출력하는 기능을 while문을 이용해서 작성해보겠습니다.

while을 이용한 합하는 스크립트
동일하게 55가 나온모습

소스설명

  • 2행 : 누적한 sum 변수 초기화
  • 3행 1~10 까지 증가할 i 변수 선언
  • 4행 i 가 10 보다 작거나 같으면 6~7행 실행하도록 
  • 6행 : sum에 i의 값을 누적해 저장
  • 7행 : i 변수의 값을 1씩 증가 시킨다.

이번엔 비밀번호를 입력받고, 비밀번호가 맞을 때까지 계속 입력받는 스크립트를 작성해 보겠습니다.

패스워드가 1234 나올때까지 돈다..
해당 스크립트를 실행해서 비밀번호를 마지막에 1234를 누른 결과

소스설명

  • 3행 : pwd 변수에 값을 입력 받는다.
  • 4행 : pwd 변수의 값이 1234가 아니면 6~7행을 실행하고, 맞으면 while 종료
  • 7행 : 다시 pwd 변수에 값을 입력받도록 한다.
728x90
반응형
LIST

댓글