从shell(bash)脚本执行命令时,在用户提示中插入文本?

问题描述:

我有一个执行另一个程序的bash脚本。该程序提示用户输入附加信息。问题是,我该如何自动执行bash脚本中的输入?从shell(bash)脚本执行命令时,在用户提示中插入文本?

例如,从我的脚本s3cmd命令提示我:

Enter new values or accept defaults in brackets with Enter. 
Refer to user manual for detailed description of all options. 

Access key and Secret key are your identifiers for Amazon S3 
Access Key: _ 

在我的shell脚本,我将如何插入用于访问键的提示字符串,然后模拟“ENTER”键?

编辑:为清楚起见

您通常使用expect命令,或者其workalikes之一。代码现在可以从SourceForge获得,看起来好像。

+0

谢谢,我使用expect了。非常酷的工具! – Calvin 2011-04-14 19:14:19

在bash,你可以简单地做:

#!/bin/bash 

echo -n "Access Key: " 
read key 

echo "you entered $key" 

默认读取命令读取1行数据(按直到回车键抓住输入)。看到这里:http://wiki.bash-hackers.org/commands/builtin/read更多选项使用在bash中读取。

+1

如果我从我自己的脚本获取用户输入,但这个问题适用于由我的脚本调用的另一个程序提示的用户输入。 – Calvin 2011-04-14 19:13:50