[编辑]
它可以被认为是[这个问题][1]的延伸。
echo |命令
上述命令可用于向命令的第一个输入请求提供一个“ENTER”字符。
如何在第二个输入请求中向同一命令提供下一个“ENTER”字符。
如果需要任何其他详细信息,请发表评论。
我给出了我想要实现的具体示例。
我需要在我的 shell 脚本中运行 SSH-keyGen
命令。
它将要求以下输入:
- 输入目标文件名
- 输入密码
- 再次输入密码
我们如何将这三个输入传递给命令?
我试过,
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/