我有一个脚本(来自供应商......用于屏蔽密码),它遍历一系列用户输入,并根据输入生成一些输出。我希望能够在其周围包装另一个脚本,该脚本从文本文件中提供输入,然后捕获输出以供以后使用。有人有这方面的例子吗?
更新:我已经做了一些挖掘,结果发现shell脚本正在启动一个请求用户输入的java进程。 xargs和<,>,|似乎没有为此工作。
答案 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脚本文件的内容。