Bash의 무한 루프

Bash의 무한 루프

로컬 디렉토리에 다음과 유사한 파일 이름을 가진 672개의 파일이 있습니다: boutique-*_20160116hh0000.csv, general-tgbt_1_20160116hh0000.csv, 여기서 hh - 시간 및 (예: boutique-a13_15_20160116060000.csvetc. boutique-a16_18_20160116070000.csv) boutique-a05_7_20160116190000.csv.

Bash에서 다음 명령을 실행합니다.

(for i in `ls -1 | sort`; do cat $i | while read line; do echo "${i%%_2016*}," $line; done ; done;) > c.csv

무한 루프가 발생하고 파일 c.csv크기가 증가합니다.

어떤 이유?

c.csv내 파일도 결과에 멈춘 것 같습니다 .

`ls -1 | sort`

그런데 이런 행동이 맞는 걸까요?

첫 번째 댓글을 받은 후 다른 테스트를 시도했습니다. 672개 대신 4개의 파일만 유지합니다(boutique-a05_7_20160116220000.csv, Boutique-a16_18_20160116020000.csv, General-tgbt_1_20160116170000.csv, wago-pfc-750 -815_99_20 16 0116020000.csv) 그리고 내 명령이 훌륭하게 작동합니다.

감사해요

답변1

결과를 다른 곳에 두는 것이 좋습니다. 출력이 ls정렬되었지만 여전히 필요하지 않습니다. 스크립트를 다음과 같이 줄입니다.

for i in *.csv ; do
    while read line ; do
        echo "${i%%_2016*}," $line
    done <$i
done >/tmp/c.csv

관련 정보