예를 들어 다음과 같은 두 개의 매개 변수가 필요한 Perl 스크립트가 있습니다.
./PerlScript 0001 192.168.100.200
하지만 이 스크립트를 실행하는 데 시간이 더 걸립니다(40x).
./PerlScript 0003 192.168.100.202
./PerlScript 0061 192.168.100.205
./PerlScript 0061 192.168.100.206
...
...
...
PerlScript 다음에 매개변수를 자동으로 삽입해야 하는데 어떻게 해야 합니까? 파일에서 로드하시겠습니까, 아니면 배열을 생성하시겠습니까?
답변1
매개변수 목록이 다음과 같이 "thelist" 파일에 있다고 가정합니다.
0001 192.168.100.200
0003 192.168.100.202
0061 192.168.100.205
0061 192.168.100.206
당신은 할 수 있습니다:
printf "./PerlScript %s %s\n" $(cat thelist) | bash
귀하의 예에서와 같이 이렇게 하면 순차적으로 실행됩니다.
로 변경
printf "./PerlScript %s %s & \n" $(cat thelist) | bash
백그라운드에서 시작되도록 합니다(그러나 컴퓨터가 다운되지 않도록 주의하세요...).
답변2
매개변수가 파일에 저장되어 있는 경우 이를 수행하는 적절한 방법은 를 사용하는 것입니다 xargs
.
이 xargs
유틸리티는 표준 입력에서 읽은 인수를 사용하여 다른 프로그램을 실행합니다.
그리고
xargs -n 2 ./PerlScript <list.in
xargs
./PerlScript
현재 디렉터리의 파일 -n 2
에서 가져온 두 개의 인수( )를 사용하여 한 번에 실행됩니다 .list.in
파일은 list.in
다음과 같습니다.
0001 192.168.100.200
0003 192.168.100.202
0061 192.168.100.205
0061 192.168.100.206
또는
0001
192.168.100.200
0003
192.168.100.202
0061
192.168.100.205
0061
192.168.100.206
xargs
매개변수는 파이프에서 읽을 수도 있습니다.
somecommand | xargs -n 2 ./PerlScript
다음은 이전 예제에서 사용된 것과 somecommand
동일한 형식으로 출력을 생성하는 몇 가지 명령입니다.list.in