【发布时间】:2016-12-29 11:08:03
【问题描述】:
我正在编写一个 shell 脚本,它有很多网络调用和安装。执行时,我需要为每个提示输入是/否。这很好。
但现在我需要将它作为 cron 运行。在这种情况下,我将无法为出现的每个提示提供输入。 有什么方法可以自动执行此操作,或者有某种机制可以在脚本中知道出现了提示?
【问题讨论】:
-
如何重新设计脚本以接受选项,从而不需要用户操作?
我正在编写一个 shell 脚本,它有很多网络调用和安装。执行时,我需要为每个提示输入是/否。这很好。
但现在我需要将它作为 cron 运行。在这种情况下,我将无法为出现的每个提示提供输入。 有什么方法可以自动执行此操作,或者有某种机制可以在脚本中知道出现了提示?
【问题讨论】:
使用yes 命令回答交互式提示,
yes Y | ./script.sh
上面的语法不断地将字符串Y 放在所有提示中。你可以在yes之后根据需要传递字符串。
您也可以使用expect 工具来实现此目的,但您需要知道确切的提示消息以相应地捕获和响应它。如果您的提示很简单并且只需要一个简单的输入来传递yes 将是正确的工具。
您也可以使用bash 内置printf,但您需要根据必须响应的提示数量手动添加响应,例如
printf 'Y\nY\nY\n' | ./script.sh
以Y 发送三个提示的响应。同样,为避免手动执行此操作,最好使用yes 命令。
【讨论】: