Скрипт Bash для передачи аргументов скрипту

Скрипт Bash для передачи аргументов скрипту

У меня нет большого опыта в написании скриптов bash. То, что я пытаюсь сделать, может быть несложным, но у меня просто есть некоторые проблемы.

Итак, у меня есть скрипт на языке C, который мне нужно использовать для запуска примерно 70 000 файлов. Скрипт вызывал определенные входные данные для ввода по одному. Например, он предлагает мне ввести (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

Связанный контент