스크립트에 인수를 전달하는 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

관련 정보