for
디렉토리에 파일을 나열할 때 정렬 측면에서 루프의 기본 동작은 무엇입니까?
예를 들어
for sqlfile in *.sql; do mysql -u root -p pass < sqlfile; done
이것이 어딘가에 문서화되어 있습니까?
답변1
man bash
"경로 이름 확장" 섹션 에 따르면 :
이러한 문자 중 하나가 발생하면 해당 단어는 패턴으로 간주되어 다음으로 대체됩니다.알파벳순으로 정렬패턴과 일치하는 파일 이름 목록 [...]
이 순서는 다음 값에 따라 달라집니다 $LC_COLLATE
.
이 변수는 경로 이름 확장 결과를 정렬할 때 사용되는 데이터 정렬을 결정합니다. [...]
위에서 볼 수 있듯이 이는 loops 와 아무 관련이 없습니다 for
. Globs는 다양한 방법으로 사용될 수 있으며 확장은 항상 순서대로 이루어집니다.
답변2
for
루프는 순서가 지정되지 않으며 나타나는 순서대로 값을 제공합니다.
$ for x in b a c ; do echo $x ; done
b
a
c
반면에 Globs는 for
a 또는 다른 곳에서 사용하든 상관없이 알파벳순으로 정렬됩니다.
$ touch b a c
$ echo *
a b c