shell 中的自动化交互式输入

Automating interactive input in shell

我正在尝试 shell 脚本在脚本中提示时自动接受值为 Y,但不知何故它总是说“应用户请求取消操作”。 nid 命令是一个用于更改数据库名称的 Oracle 实用程序 DBNEWID。

知道如何在下面的函数中接受 Y 吗? 函数登录到数据库并更改名称。

function rename_db {
nid target=SYS/"as sysdba" DBNAME=newdb << EOD
Y
EOD
}

Runtime output:

Change db ID and name to newdb? (Y/[N]) =>

Operation cancelled at user request

您安装了 expect (https://en.wikipedia.org/wiki/Expect) 吗?你会想使用专为这类事情设计的。

在下面使用,如果我们使用日志文件那么它将接受 Y 作为默认值并且从不提示。

例如nid target=sys/"as sysdba" dbname=old_db logfile=rename.log