본문 바로가기
  • Welcome.
:: Linux 🚩/Linux_shell_script

[리눅스1] [6일차] [ #03 셸스크립트 for문 ]

by EunBird 2021. 5. 3.

vi for.sh : for.sh 생성 후 vi 에디터로 수정.

 

chmod 755 for.sh : for.sh 에 권한 755 부여.

 

./for.sh : 현재 폴더에 있는 for.sh 실행.

 

cat for.sh : for.sh 읽기.

 

ㅡㅡㅡㅡㅡfor.sh 내용 ㅡㅡㅡ

#!/bin/bash

 

for var in 1 2 3 4 5  #변수 var 가 1, 2, 3, 4, 5인 동안 종속된 문장 실행. #var은 그냥 변수명.

do

         echo $var  

done

ㅡㅡㅡㅡㅡ

 


 

위처럼 list 를 정의해주고 for문을 통해 같은 결과를 출력할 수 도 있다. 

 

ㅡㅡㅡㅡㅡfor.sh내용ㅡㅡㅡ

#!/bin/bash

 

list="1 2 3 4 5"  #list 정의

 

for var in $list 

do

         echo $var

done

ㅡㅡㅡㅡㅡ

 


 

touch .ccc : 숨김파일인 .ccc 생성. 

 

vi for.sh : for.sh 을 vi 에디터로 수정.

 

cat for.sh : for.sh 읽기.

 

./for.sh : 현재 폴더안에 있는 for.sh 실행.

 

ㅡㅡㅡㅡㅡfor.sh 내용 ㅡㅡㅡ

#!/bin/bash

 

list="1 2 3 4 5" # list를 정의하긴 했으나 이 for문에서는 쓰이지 않음

 

for var in * .*   # * : 모든 파일 ,  */ : 숨겨진 모든파일

do

         echo $var

done

ㅡㅡㅡㅡㅡ

따라서 숨김파일과 숨겨지지않은 파일 모두의 이름이 출력된다.

 

 


ㅡㅡㅡㅡㅡfor.sh 내용ㅡㅡㅡ

#!/bin/bash

 

for var in {1..20..2}  # 1부터 2씩 늘어나면서, 20까지

do

         echo $var

done

ㅡㅡㅡㅡㅡ

 

ㅡㅡㅡㅡㅡfor.sh 내용ㅡㅡㅡ

#!/bin/bash

 

for var in {20..1..2}  # 20부터 2씩 줄어들면서, 1까지

do

         echo $var

done

ㅡㅡㅡㅡㅡ

 

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

물론 이런 간단한 출력은 

seq [숫자]

명령어를 통해 출력할 수 있기도 하다.

 


 

 

**for문 증감식 사용법**

 

ㅡㅡㅡㅡㅡfor.sh내용ㅡㅡㅡ

#!/bin/bash

 

for ((i=10; i>=0; i--))  # i=10에서부터 한번 종속문장을 실행할 때마다 1이 감소시키고 i>=10 인 경우에만 수행.

do

          echo $i

done

ㅡㅡㅡㅡㅡ

 

 

 


ㅡㅡㅡㅡㅡfor.sh내용ㅡㅡㅡ

#!/bin/bash

 

for (( ;; ))  #무한루프 생성.

do

         echo hello # hello 출력.

         sleep 1  # 1초간 멈춤. (1초 지연)

done

ㅡㅡㅡㅡㅡ

위의 for.sh의 경우엔 break 문이 없기 때문에 ctrl +c (강제종료) 를 통해 빠져나와야 한다. 

 

 

 


 

ㅡㅡㅡㅡㅡfor.sh내용ㅡㅡㅡ

#!/bin/bash

 

for (( ;; ))  # 무한루프 생성.

do

         echo program exit value plz \( hint \: 10 \* 2 \) 

         #조건식이 아닌 출력문장일 때는 특수기호 앞에 \를 붙여줘야한다.

         read value  # 입력받은 값을 value에 저장.

 

         if [ $value == 20 ]  # $value에 저장된 값이 20 인가?

         then

                 echo program exit success!

                 break  # 해당반복문 탈출.

         else

                 echo wrong! again!

         fi

done

ㅡㅡㅡㅡㅡ

 

 

 

 

 

 

 


ㅡㅡㅡㅡㅡfor.sh내용ㅡㅡㅡ

#!/bin/bash

 

for file in *  # 현재 폴더의 모든 파일에 대해서 

do

         cp $file file.bak  # .bak 형식의 파일을 만듬.

done 

ㅡㅡㅡㅡㅡ

 


 

ㅡㅡㅡㅡㅡfor.sh 내용ㅡㅡㅡ

#!/bin/bash

 

for file in *  # 현재 폴더에 속한 모든 것들에 대해

do

         if [ -d ${file} ]  # ${file} 이 디렉토리인가?

         then

                 continue  # 반복문 처음으로 돌아감

         fi

 

         #echo $file

         if [ ${file} != ${file.bak}# ${file} 와 ${file.bak}가 이름이 같지않은가?(달라야 참값)

         then 

                 continue  # 반복문 처음으로 돌아감

         fi

 

         if [ -f ${file}.bak ]  # ${file}.bak 이 일반 파일인가?

         then

                 echo exists ${file}

         fi

 

         cp $file $file.bak  # 파일 복사 후 이름뒤에 .bak 을 붙임.

done

ㅡㅡㅡㅡㅡ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90

댓글