한 줄 bash 루프에서 & (앰퍼샌드) 사용


58

이 명령을 성공적으로 사용하여 구성 파일의 변수를 변경 한 다음 루프 내에서 Python 스크립트를 실행합니다.

for((i=114;i<=255;i+=1)); do echo $i > numbers.txt;python DoMyScript.py; done

DoMyScript.py종료하기 전에 각각 자체가 실행하는 데 약 30 초가 걸리므로 다음 배경을 생성 할 수있는 동안 백그라운드로 다시 연결하고 싶습니다.

다음과 같이 앰퍼샌드를 추가하여 익숙한 것을 시도했습니다.

for((i=114;i<=255;i+=1)); do echo $i > numbers.txt;python DoMyScript.py &; done

그러나 이로 인해 아래 오류가 발생합니다.

-bash : 예기치 않은 토큰`; '근처의 구문 오류

답변:


85

;후를 삭제하십시오 &. 이것은 구문 요구 사항입니다

for((i=114;i<=255;i+=1)); do echo $i > numbers.txt;python DoMyScript.py & done

1
젠장, 43초 너무 느린 :
마틴 폰 WITTICH

2
@MartinvonWittich, 귀하의 답변에 대한 답변 +1 ;-)
iruvar

4
그 질문에 대한 답 반면, 영업 이익은 그들이 모두 볼 수 있습니다 모든 파이썬 인스턴스 시작 시간을 처음 상태로로 원하는 것을 아마 아니다 numbers.txt포함 255.
Stéphane Chazelas

1
@StephaneChazelas와 동의했지만 질문에 제공된 정보를 사용하여 실제로 무엇을 할 수 있는지 잘 모르겠습니다. 이에 대한 적절한 솔루션은 더 많은 컨텍스트가 필요할 것입니다.
CVn

3
bash 수동 참조는 다음과 같습니다. gnu.org/software/bash/manual/bashref.html#Lists
glenn jackman

14

1_CR의 답변에 대한 Stephane의 의견을 감안할 때 아마도 다음을 원할 것입니다.

for i in {114..255}; do { echo $i > numbers.txt && python DoMyScript.py; } & done

고마워요 글렌 가독성이 향상되어 좋아하는 몇 가지 코드 변형을 시도했지만 필요한 여분의 수면으로 인해 작동하지 않았습니다. 또한 for범위 의 마지막 숫자를 반복합니다 ... 현재 내가 좋아하는 것은 다음과 같습니다 for((i=1;i<100;i+=1)); do echo $i > numbers.txt;sleep 3; python DoMyScript.py & done. 백그라운드에서 프로세스가 실행되도록하는 주요 문제가 해결되었습니다.
ljs.dev

* 물론, 나는 <=원래 질문에 있었으므로 제공 한 범위는 내가 제공 한 정보에 따라 완전히 적합했습니다. 다시 말하지만, 다른 접근 방식을 주셔서 감사합니다
ljs.dev

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.