Script Bash para passar argumentos para um script

Script Bash para passar argumentos para um script

Não tenho muita experiência com scripts bash. O que estou tentando fazer aqui pode não ser complicado, mas só tenho alguns problemas.

Portanto, tenho um script C que preciso usar para executar aproximadamente 70.000 arquivos. O script invocou certas entradas para eu inserir uma por uma. por exemplo, ele me pede para digitar (s/n) para sim ou não 7 vezes, uma após a outra. por exemplo, se eu executar o script em um arquivo, ele me solicitará que digite sim ou não para algo seguido por vários prompts perguntando (s/n). Neste caso, há 7 prompts s/n. Em seguida, ele solicita vários outros parâmetros que eu insiro assim que são solicitados, por exemplo, c para continuar, 100 para porcentagem, etc.

Todos esses parâmetros são iguais para todos os 70.000 arquivos. Eu queria saber se alguém pode me orientar sobre como passar todos esses argumentos para o script bash assim que forem solicitados. Bem básico, mas é isso que tenho até agora:

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

os comandos bash acima invocam o script, mas solicitam que eu insira todos esses parâmetros para cada arquivo. Nota: não consigo manipular o script subjacente.

Responder1

Este é um trabalho para expect.

Digamos que seu programa C produza algo semelhante ao seguinte:

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

Você escreveria um script esperado como:

#!/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
}

Em seguida, chmod +xo script e execute-o, ouexpect /path/to/script

informação relacionada