将参数传递给脚本的 Bash 脚本

Lil*_*ton 6 bash arguments

我对 bash 脚本没有太多经验。我在这里尝试做的事情可能并不复杂,但我只是遇到了一些问题。

所以我有一个 C 脚本,我必须使用它来运行大约 70,000 个文件。该脚本调用某些输入让我一一输入。例如,它提示我依次输入 (y/n) 是或否 7 次。例如,如果我在一个文件上运行脚本,它会提示我输入是或否,然后是多个提示询问 (y/n)。在这种情况下,有 7 个是/否提示。然后继续提示我输入的其他几个参数,例如 c 表示继续,100 表示百分比等。

所有这些参数对于所有 70,000 个文件都是相同的。我想知道是否有人可以指导我如何在提示后将所有这些参数传递给 bash 脚本。非常基本,但这是我目前所拥有的:

var='testdir/*'
for i in var; do
    /script $i
done
Run Code Online (Sandbox Code Playgroud)

上面的 bash 命令调用脚本,但提示我为每个文件输入所有这些参数。注意:我无法操作底层脚本。

phe*_*mer 9

这是一份工作expect

假设您的 C 程序输出类似于以下内容:

question 1? (y/n):
question 2? (y/n):
enter some percent value:
bunch of stuff
confirm? (y/n):
Run Code Online (Sandbox Code Playgroud)

您将编写一个期望脚本,例如:

#!/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
}
Run Code Online (Sandbox Code Playgroud)

然后要么chmod +x脚本并运行它,要么expect /path/to/script