我有一个脚本(来自供应商......用于屏蔽密码),它遍历一系列用户输入,并根据输入生成一些输出。我希望能够围绕它包装另一个脚本,该脚本从文本文件中提供输入,然后捕获输出以供以后使用。有人有这方面的例子吗?
更新:我进行了一些挖掘,结果表明 shell 脚本正在启动一个 java 进程,该进程正在请求用户输入。xargs 和 <,>,| 似乎对此不起作用。
myscript < input_file > output_file
(从命令行)将input_file
逐行读取,就好像它是用户输入一样,然后将输出写入output_file
. 但是要小心,如果output_file
已经存在,它将被完全覆盖而没有任何警告。
您可以尝试expect
大多数 linux 发行版的软件包。它使用简单的脚本语言来提供交互式程序。示例脚本可以是这样的:
#!/usr/bin/expect
spawn passwordmanager
expect "Enter password for testuser:"
send "verysecret123"
该脚本会告诉expect
启动程序passwordmanager
,然后等待提示Enter password for testuser:
并回答它verysecret123
等等。
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 脚本文件的内容。