Bash 脚本将参数传递给脚本

Bash 脚本将参数传递给脚本

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

所以我有一个 C 脚本,我必须使用它来运行大约 70,000 个文件。该脚本调用了某些输入,让我一一输入。例如,它提示我连续输入 7 次(y/n)表示是或否。例如,如果我在一个文件上运行脚本,它会提示我输入“是”或“否”,然后是多个提示询问(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

相关内容