如何从文本文件向交互式bash脚本提供输入

时间:2013-03-15 20:21:17

标签: bash io

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

更新:我已经做了一些挖掘,结果发现shell脚本正在启动一个请求用户输入的java进程。 xargs和<,>,|似乎没有为此工作。

3 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:3)

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

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

此脚本会告诉expect启动程序passwordmanager,然后等待提示Enter password for testuser:并使用verysecret123进行回答,依此类推。

答案 2 :(得分:-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
}

假设'script'是您的供应商脚本。没有错误检查(仅用于说明)。如果不是shell函数,则上述script_plus的主体可以是shell脚本文件的内容。