linux - 如何为 bash 脚本中的命令模拟两次连续的 ENTER 键按下?

标签 linux bash

[编辑] 它可以被认为是[这个问题][1]的延伸。 echo |命令 上述命令可用于向命令的第一个输入请求提供一个“ENTER”字符。

如何在第二个输入请求中向同一命令提供下一个“ENTER”字符。

如果需要任何其他详细信息,请发表评论。

我给出了我想要实现的具体示例。 我需要在我的 shell 脚本中运行 SSH-keyGen 命令。 它将要求以下输入:

  1. 输入目标文件名
  2. 输入密码
  3. 再次输入密码

我们如何将这三个输入传递给命令?

我试过,

echo -ne "\n \n"| ssh-keygen  //which is passing two new lines for the first input request only.

echo -ne "\n"|(echo -ne "\n"|ssh-keygen)//还是没有结果

注意:我在上面的两个命令中避免了输入文件名请求,只是为了让事情变得简单

最佳答案

例如,您可以使用任一个

echo -e "\n"

echo -en "\n\n"

-e 选项告诉 echo 解释转义字符。 \n 是换行符(输入)。因此第一个打印由于 \n 而产生的换行符,然后是另一个,因为 echo 通常会附加一个换行符。

-n 选项告诉 echo 禁止添加隐式换行符。因此,要获得两个换行符,您需要指定两个 \n

编辑:

这里的问题是 ssh-keygen 很特殊。出于安全考虑,密码不是从标准输入中读取的,而是直接从终端读取的!要提供密码(即使是空密码),您需要使用 -P 选项。因为你只需要一个 ENTER(用于文件路径提示),这个命令应该有效:

echo | ssh-keygen -P ''

(注意中间没有空格的两个 ':它们很重要!)

关于linux - 如何为 bash 脚本中的命令模拟两次连续的 ENTER 键按下?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30712126/

相关文章:

Linux:如何在给定套接字描述符的情况下获取 TCP 套接字选项?

linux - 删除虚拟串口(socat)

bash - vim:为什么 sh 配色方案将 `$(...)` 突出显示为错误?

linux - 如何显示bash特殊字符\h、\s等

linux - 获取文件的内容并搜索 unix 中特定目录中的所有文件中的内容

node.js - 如何在 NodeJS 中生成一个新进程并将 stderr 重定向到 stdout?

linux - PPS : how to adjust system clock from PPS?

linux - 将行作为参数传递给脚本

linux - Digital Ocean 服务器上的 Beego 超时错误

c - 将 cmp 与进程替换 (stdout) 一起使用? ( bash )