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

时间:2011-04-13 23:30:12

标签: bash scripting

我有一个执行另一个程序的bash脚本。该程序提示用户输入其他内容。问题是,如何从我的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脚本中,如何为Access Key提示符插入字符串,然后模拟“enter”键?

编辑:为清晰起见

3 个答案:

答案 0 :(得分:5)

您通常会使用expect命令或其中一项工作。现在可以从SourceForge获得代码了。

答案 1 :(得分:0)

在bash中你可以做到:

#!/bin/bash

echo -n "Access Key: "
read key

echo "you entered $key"

默认情况下,read命令读取1行数据(抓取输入直到按下回车键)。请参阅此处:http://wiki.bash-hackers.org/commands/builtin/read了解更多使用bash读取的选项。

答案 2 :(得分:0)

您可以使用echo命令将输入​​键发送到脚本(使用\ n作为输入键) 回显“ MyAccessKey \ nSecretKey \ n” | ./myscript.sh

或者脚本是否针对是(y)/否(n)询问几个问题,而您想回答:是/否/是 回声“ yny” | ./myscript.sh