스크립트에 인수를 전달하는 Bash 스크립트

스크립트에 인수를 전달하는 Bash 스크립트

나는 bash 스크립팅에 대한 경험이 많지 않습니다. 내가 여기서 하려는 일은 복잡하지 않을 수도 있지만 몇 가지 문제가 있습니다.

그래서 약 70,000개의 파일을 실행하는 데 사용해야 하는 C 스크립트가 있습니다. 스크립트는 내가 하나씩 입력할 수 있도록 특정 입력을 호출했습니다. 예를 들어 예 또는 아니오에 대해 (y/n)을 7번 연속으로 입력하라는 메시지가 표시됩니다. 예를 들어, 한 파일에서 스크립트를 실행하면 어떤 항목에 대해 예 또는 아니요를 입력하라는 메시지가 표시되고 이어서 여러 프롬프트(y/n)가 표시됩니다. 이 경우 7개의 y/n 프롬프트가 있습니다. 그런 다음 계속해서 c를 입력하고 백분율을 100으로 입력하는 등의 메시지가 표시되면 입력하는 여러 다른 매개변수를 입력하라는 메시지가 표시됩니다.

이러한 모든 매개변수는 70,000개 파일 모두에 대해 동일합니다. 메시지가 표시되면 누군가 이러한 모든 인수를 bash 스크립트에 전달하는 방법을 안내해 줄 수 있는지 궁금합니다. 매우 기본적이지만 이것이 내가 지금까지 가지고 있는 것입니다:

var='testdir/*'
for i in var; do
    /script $i
done

위의 bash 명령은 스크립트를 호출하지만 각 파일에 대한 모든 매개변수를 입력하라는 메시지를 표시합니다. 참고: 기본 스크립트를 조작할 수는 없습니다.

답변1

이것은 을 위한 작업입니다 expect.

C 프로그램이 다음과 유사한 결과를 출력한다고 가정해 보겠습니다.

question 1? (y/n):
question 2? (y/n):
enter some percent value:
bunch of stuff
confirm? (y/n):

다음과 같은 예상 스크립트를 작성합니다.

#!/usr/bin/expect

foreach file [glob /path/to/70k/files/*] {
  spawn "/path/to/c_prog" $file

  expect "question 1? (y/n): " { send "y\r" }
  expect "question 2? (y/n): " { send "n\r" }
  expect "enter some percent value: " { send "100\r" }
  expect "confirm? (y/n): " { send "y\r" }
  interact
}

그런 다음 chmod +x스크립트를 실행하거나expect /path/to/script

관련 정보