5

我有一个脚本(来自供应商......用于屏蔽密码),它遍历一系列用户输入,并根据输入生成一些输出。我希望能够围绕它包装另一个脚本,该脚本从文本文件中提供输入,然后捕获输出以供以后使用。有人有这方面的例子吗?

更新:我进行了一些挖掘,结果表明 shell 脚本正在启动一个 java 进程,该进程正在请求用户输入。xargs 和 <,>,| 似乎对此不起作用。

4

3 回答 3

6

myscript < input_file > output_file(从命令行)将input_file逐行读取,就好像它是用户输入一样,然后将输出写入output_file. 但是要小心,如果output_file已经存在,它将被完全覆盖而没有任何警告。

于 2013-03-15T20:38:29.790 回答
5

您可以尝试expect大多数 linux 发行版的软件包。它使用简单的脚本语言来提供交互式程序。示例脚本可以是这样的:

#!/usr/bin/expect
spawn passwordmanager
expect "Enter password for testuser:"
send "verysecret123"

该脚本会告诉expect启动程序passwordmanager,然后等待提示Enter password for testuser:并回答它verysecret123等等。

于 2013-03-19T10:37:34.763 回答
-1

shell函数怎么样

function script_plus ()
{
   if [ $# != 2 ]; then echo "usage: ..."; exit; fi
   src=$1;
   tgt=$2;
   if [ ! -f $src ]; then echo "usage: ..."; exit; fi
   cat $src | xargs script > $tgt
}

假设“脚本”是您的供应商脚本。不进行错误检查(仅用于说明)。如果不是 shell 函数,则上面的主体script_plus可能是 shell 脚本文件的内容。

于 2013-03-15T20:26:05.720 回答