>
bash 스크립팅에 대한 경험이 많지 않습니다. 내가 여기서하려고하는 것은 복잡하지 않지만 약간의 문제가 있습니다.

그래서 약 70,000 개의 파일에서 실행하는 데 사용해야하는 C 스크립트가 있습니다. 스크립트는 하나씩 입력 할 특정 입력을 호출했습니다. 예 : 예 또는 아니오로 차례로 (y/n)을 입력하라는 메시지가 나옵니다. 예를 들어, 하나의 파일에서 스크립트를 실행하면 (y/n)을 묻는 여러 프롬프트가 나오면 yes 또는 no를 입력하라는 메시지가 표시됩니다. 이 경우 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

  • 이전 hostname -i가 다른 시스템에서 다른 결과를 제공하는 이유는 무엇입니까?
  • 다음 linux - 하드웨어 RAID 상태 점검