Linux 명령 행을 프로그래밍하여 코드를 여러 번 실행하는 방법은 무엇입니까?


1

그래서 나는 보통 내가 작성한 코드에 대해 테스트 케이스 생성기를 작성 / 찾기합니다. 이 유형의 코드는 일반적으로 일부 파일 출력으로 이어집니다. 철저히하기 위해 코드를 테스트하기 위해 다양한 파일을 생성하려고합니다.

명령이 다음과 같다고 가정하십시오.

java test <parameters/> > <output filename/>

매개 변수의 많은 다른 값에 대해 이것을 자동화하고 다른 많은 파일을 생성하는 방법이 있습니까?

나는 시도했다 :

for i in seq `0 3`; do java test $i > $i.txt; done

파일 이름에 $ i를 사용할 수 없었으며 명령이 없으면 오류가 발생하지 않았지만 다른 작업은 수행하지 않았습니다. 유닉스 커맨드 라인이 매우 강력하다는 것을 알고 있으며 이것이 가능해야한다고 생각하지만 어떻게 해야할지 모르겠습니다.

답변:


5

Bash를 사용하는 경우을 사용할 이유가 없습니다 seq. 또한 백틱 대신에 사용 $()하는 것이 좋습니다 (그러나 이러한 형식 중 하나를 사용하는 경우에는 필요하지 않습니다).

for i in {0..3}; do java test $i > "$i.txt"; done

또는

for ((i=0;i<=3;i++)); do java test $i > "$i.txt"; done

2

bash 쉘에 있다고 가정하면 seq명령을 백틱으로 이동하십시오 .

`seq 0 3`에서 i의 경우; 자바 테스트를 수행하십시오 $ i> $ i.txt; 끝난

귀하의 솔루션도 잘 작동하지만 정답을 하나만 선택할 수 있습니다.
efficiencyIsBliss

1

나는 당신의 앱이 stdin을 읽고 새로운 스레드를 생성하게하면 더 효율적이라고 말할 것입니다.

그리고 또 다른 루프 :

seq 0 3 | while read i; do java test $i > "$i.txt"; done
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.