- NEW초롱이의 하루
- kisa
- 길은 가면, 뒤에 있다
- C언어 예술가
- Zer0 day - Zer0 day
- Information Security
- Secure-EDU
- 앙큼한유채's 일상 Story
- Library of Ezbeat (잠정 폐쇄)
- The Factory
- 안드
- 모후모후의 커뮤니티
- 공학도의 잡다한 시선
- 안드2
- IT속에 코코아
- IP주소검색(whois)
- IP주소검색(좌표포함)
- 소프트웨어 경력 관리
- 해저 케이블 지도
- MAC주소검색
- IANA
- 포트번호검색
- 자신의IP확인
- 웹페이퍼캡처
- 나의패스워드보안등급
- 웹 취약점 분석
- IT용어정리
- GitHub
- 라이브러리 모음
- 웹마당넷
- 시스템콜참고
- BCD 변환
- 보안뉴스
- 코딩도장(C, Python)
- 백준알고리즘
- 코딩테스트 연습
- 웹 사이트 테스트
- 스크립트꾸미기
- ctf대회목록
- 전자신문
- hash 크랙
- CVE
- 도메인등록
- N클라우드
- BugBountyList
- 칼리공식사이트
- CR4FTING BOX
- 아스키코드 변환
- 웹 사이트 통계 및 평가
- PDF변환
- AWS 및 클라우드 정보
- 가상화 및 서버관련
- 티오리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- RaspberryPi
- API
- 클라우드
- 쉘 스크립트 기초
- synology
- 리눅스
- 프로젝트
- JSP
- 자바
- 메소드
- docker
- Python
- 그라파나
- LEVIATHAN
- GUI
- Android
- Shell script
- Linux
- centos docker
- 네트워크
- ACL
- 안드로이드
- Tkinter
- System
- nginx
- 쉘 스크립트 if문
- Java
- GPIO
- 라즈베리파이
- 쉘 스크립트
- Today
- Total
IT창고
쉘 스크립트 for문 본문
이번에는 쉘 스크립트에서 반복하여 작업할 때 쓰이는 for문에 대해 알아보도록 하겠습니다.
bash쉘에서 반복되는 루프를 만들수있는 구문은 아래와 예시와 같습니다
for 변수 in 값
do
반복할 구문
done
위의 값에 매개변수에는 반복에 사용될 값을 넣어주며 값은 값1, 값2, 값3.... 혹은 다른 변수에 list값을 넣어주면 됩니다.
반복이 실행될때는 변수는 첫 반복시 값1을 사용한 후 두번째 반복 시 값2를 사용하며 반복이 실행됩니다.
이론보다는 실습으로 확인하면 더 쉽게 알수있으니 바로 간단한 for문의 사용을 확인해보도록 하겠습니다.
위의 사진과 같은 결과는 아래의 소스코드에서 확인 가능한 쉘 스크립트로 만들어졌습니다.
#!/bin/bash
#for 1
for gsk in 1 2 3 4 kwon abc
do
echo "입력된 값 출력:"$gsk
done
단순하게 값에 적당한 입력값을 넣어 echo명령어로 출력하는 스크립트 입니다.
gsk라는 변수에 for문 값들이 출력된걸 확인할 수 있습니다.
#!/bin/bash
#for 1
list="1 2 3 4 kwon abc" #1번 방법
#echo "값을 입력하세요 ex)1 2 3 kwon abc" #2번 방법
#read list
for gsk in $list
do
echo "입력된 값 출력:"$gsk
done
위의 스크립트는 위의 사진에 있는 결과와 같으며 list변수에 값을 미리 넣어 출력하는 스크립트 입니다.
2번 방법으로 직접 입력하는 방법도 있으며 방법은 사용하기 나름입니다.
위의 사진과 같은 결과는 아래의 소스코드에서 확인 가능한 쉘 스크립트로 만들어졌습니다.
#!/bin/bash
#for 2
gsk_num=7
for n in {1..12}
do
let num=$gsk_num*n
echo "$gsk_num * $n = $num"
done
gsk_num 변수에 7를 넣어 구구단 형식으로 반복문을 실행하였습니다. 값에 구간 시작점과 구간 끝을 사용하는 점만 추가되었으며 연산으로 반복문을 실행했다는 점이 처음의 쉘 스크립트와의 다른 점입니다.
#!/bin/bash
#for 2
gsk_num=7
for (( n=1; n<=12; n++ ))
do
let num=$gsk_num*n
echo "$gsk_num * $n = $num"
done
또한 for문을 C언어 스타일대로 사용이 가능합니다. 위의 스크립트는 C언어 스타일로 쉘 스크립트를 작성한것이며 결과는 두번쨰 사진과 같습니다. 추가로 (a=1 b=2; a<=10; a++ b--)와 같은 다양한 변수 사용도 가능합니다
마지막으로 for문에 if문을 사용해보도록 하겠습니다.
위의 사진과 같은 결과는 아래의 소스코드에서 확인 가능한 쉘 스크립트로 만들어졌습니다.
#!/bin/bash
#for 3
test_gsk1=`cat /etc/passwd | awk -F ":" '{print $1}'`
test_gsk2="httpd mysql"
echo "찾을 계정 입력 ex) zabbix "
read text
#clear
for gsk1 in $test_gsk1
do
if [ $gsk1 = $text ]; then
echo "$text 계정은 존재합니다!"
check=1
break
else
check=0
fi
done
if [ $check -gt 0 ]; then
exit 0
else
for gsk2 in $test_gsk2
do
ps -ef | grep -v grep | grep $gsk2
done
fi
echo ""
echo "찾는 계정이 없으므로 대신 귀여운 apache, mysql 프로세스 찾아드렸습니다!"
최대한 다양한 구문을 넣을 수 있도록 생각나는대로 만들어 보았습니다.
대충 만들고나니 뭔가 조잡하긴 한데 공부에는 도움이 될거라 믿습니다.
위의 쉘 스크립트를 설명하면 test_gsk1 변수에 /etc/passwd 파일내에 계정명을 확인하는 명령어로 첫번째 for문에서 입력값에서 받은 text변수와 문자를 비교하며 같은 문자를 찾으면 break로 for문 루프를 빠져나오고 다음 if문에 조건을 만족하여 exit 0로 쉘 스크립트가 종료 됩니다. 만약 일치하는 문자를 찾지 못할 경우 다음 if문에서 프로세스를 찾아보며 if문이 끝나고 마지막에 echo문을 출력하게 됩니다.
그 외에도 for문을 다양한 방식으로 사용이 가능하며 어떤 목적의 쉘 스크립트를 제작함에 따라서 사용이 됩니다.
'프로그래밍 > Shell Script' 카테고리의 다른 글
쉘 스크립트 while문 (0) | 2020.11.05 |
---|---|
쉘 스크립트 if문 3 (0) | 2020.10.19 |
쉘 스크립트 if문 2 (0) | 2020.10.17 |
쉘 스크립트 if문 1 (0) | 2020.10.10 |
쉘 스크립트 기초 2 (0) | 2020.10.07 |