Bash:For
bash의 for
문 사용방법에 대하여 정리한다.
Numeric ranges
아래와 같이 입력되는 숫자 목록을 나열할 수 있다.
또는 아래와 같이 범위를 줄 수 있으며,
또는 아래와 같이 증가값을 변화할 수 있다.
비슷한 기능을 하는 seq 라는 명령행 도구도 있다.
Example
TDD를 적용하여, 테스트를 실패할 때 까지 N회 테스트를 하는 코드는 아래와 같다.
File list loop
아래와 같이 파일 목록을 나열할 수 있다.
또는 아래와 같이 와일드카드를 줄 수 있다.
Commend output loop
Array loop
python의 foreach
스타일 루프:
c의 for
스타일 루프:
PLANETS=( "EARTH" "MARS" "VINUS" )
for (( i=0; i<${#PLANETS[@]}; i++ )); do
echo "Planet #$i is ${PLANETS[i]}"
done
Text input loop
파일을 읽어들인 후 그 목록을 기반으로 LOOP를 돌린다.
입력 필드 구분자 변경
아래와 같은 파일이 존재한다 가정한다.
(중앙에 TAB문자가 존재한다.)
이 경우 일반적인 Text input loop를 적용하면 탭(\t
)과 개행을 모두 구분자로 사용한다. 탭을 제외한 개행만을 구분자로 사용하고 싶을 경우 아래와 같이 IFS
변수를 수정하면 된다.
find result loop
find명령으로 찾은 결과에 공백이 포함될 경우 다음과 같이 사용할 수 없다:
따라서 다음과 같이 사용해야 한다.
Three-expression bash for loops syntax
Rename example
검색된 INDEX 순서로 파일 명칭을 바꾸는 스크립트는 아래와 같다.
DIR=directory_name
NAMES=`find $DIR -iname '*.jpg'`
val=0
for i in $NAMES; do
mv "$i" "$DIR/$val.jpg"
let "val = val + 1"
done