Script Bash para passar argumentos para um script

6

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

Portanto, tenho um script em 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 entrar (y / n) para sim ou não 7 vezes um após o outro. Assim, por exemplo, se eu executar o script em um arquivo, ele solicitará que eu digite sim ou não para algo seguido por vários prompts perguntando (y / n). Neste caso, há 7 y / n prompts. Em seguida, ele avisa vários outros parâmetros que eu insiro uma vez que eles são solicitados, por ex. c para continuar, 100 para porcentagem etc.

Todos esses parâmetros são os mesmos 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 uma vez que eles são solicitados. Bastante básico, mas é o que eu tenho até agora:

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

os comandos bash acima invocam o script, mas me pedem para inserir todos esses parâmetros para cada arquivo. Nota: Eu não posso manipular o script subjacente.

    
por Lily Sharpton 26.10.2016 / 04:37

1 resposta

9

Este é um trabalho para expect .

Digamos que seu programa em 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 de expectativa 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, use chmod +x do script e execute-o ou expect /path/to/script

    
por 26.10.2016 / 06:11