如何响应在后台运行的 shell 脚本中的提示?

37S*_*per 8 input shell-script background-process

我正在编写在 HP-UX 服务器上安装软件的脚本。脚本启动后,它会提示我输入安装路径。我需要将路径传递给脚本,以便它可以继续运行。脚本中只有 1 个地方存在这种需求。

脚本中的提示是:按 ENTER 获取默认路径或输入安装软件的路径:

我不想使用默认路径,所以我必须输入一个新路径。但是这个脚本会在后台运行,我需要提供路径。我不确定脚本形式的确切响应。

X T*_*ian 5

您可以使用管道将您的答案回显到脚本的标准输入中。

echo "My/Path/not/default"| yourscript.sh
Run Code Online (Sandbox Code Playgroud)


Gil*_*il' 5

如果您可以在脚本启动时提供所有输入,则可以通过重定向程序的输入来实现。也就是说,不是运行/path/to/installer,而是运行

\n\n
{ echo \'/the/path/where/to/install\';\n  echo \'answer to the second prompt\';\n} | /path/to/installer\n
Run Code Online (Sandbox Code Playgroud)\n\n

或使用此处的文档

\n\n
/path/to/installer <<\'EOF\'\n/the/path/where/to/install\nanswer to the second prompt\nEOF\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果您想时不时地与程序交互,但同时使用终端执行其他操作,请在终端多路复用器(例如Screentmux )中运行该程序。使用 screen,通过运行 启动会话screen,然后启动程序。要执行其他操作,请按+Ctrl创建第二个窗口,然后按+在窗口之间导航。要退出屏幕但保持程序运行,请按+ , (\xe2\x80\x9cdetach\xe2\x80\x9d)。要返回到现有的 Screen 会话,请运行(如果没有选项将启动新会话)。AcCtrlAnCtrlAdscreen -rdscreen

\n