#!/bin/bash
echo -n "Enter your id:"
read ID
if [[ "$ID" == [0-9]* ]]; then
echo "Invalid ID"
exit -1
fi
한 줄씩 읽어 처리
- bash의
read
를 사용한다.
read
는 STDIN을 읽는다.
- 보통 redirect, pipe를 사용해 stdin으로 보내 전달한다.
명령어 결과를 한줄 씩 처리
- Pipeline을 이용한다.
ls ./path | while read line
do
echo $line
done
ls /specific/path | while read line
do
echo $line
done
파일을 한줄 씩 처리
- Redirection 이용
while read line
do
echo $line
done < test.txt
- Pipeline 이용
cat test.txt | while read line
do
echo $line
done
awk 를 이용해 많은 양 처리하자
| while read line
- 주의사항!!
|
pipe 로 연결된 명령들은 subshell에서 실행된다!!!
따라서 |
PIPE 연결한 명령의 & (bg) 실행은 밖 wait에서 안기다린다!
LINE_NO=$(cat 'file' | wc -l)
for ((i=1; i<=${LINE_NO}; i++)); do
THIS_LINE=$(awk "NR==$i" ${COMMAND_FILE})
"많은 양 처리" &
done
wait