2016-08-16 9 views
-1

나는이 명령은 동일하게 작동 기대 :중괄호 확장이이 물고기 (쉘) 케이스의 루프처럼 작동하지 않는 이유는 무엇입니까?

# 1 
python3 scripts/{01,02}*.py 

# 2 
for script in scripts/{01,02}*.py; python3 $script; end 

사실을 그 # 1 반환이 날 차이가 있다고 생각합니다 echo 대신, # 2를 반환으로 실행하는 경우 한 줄. 두 번째 버전이 작동하고 첫 번째 스크립트는 첫 번째 스크립트 만 실행합니다.

왜 그럴까요?

+0

'echo' 명령은 파일 다음에 개행 문자를 쓰지 않습니다. 시도해보십시오 :'printf "% s \ n"scripts/{01,02} *. py' – anubhava

답변

1

저는 처음에는 python 인터프리터의 인스턴스 하나를 실행하여 첫 번째 인수로 실행할 스크립트와 두 번째 인수로 전달합니다 (첫 번째 인수는 첫 번째 스크립트에 전달됨). 그것은 두 번째 스크립트의 이름을 잘 무시할 수 있습니다).

두 번째 경우에는 python 인터프리터의 인스턴스 두 개를 실행하며 각 인스턴스는 실행할 스크립트의 이름을 사용합니다.

결과가 놀랍지 않습니다.