我创建了一个非常简单的bash脚本,该脚本运行一些命令。这些命令之一在运行时需要用户输入。即,它询问用户“您想等等吗?”,我只想向其发送回车按键,以便脚本将完全自动化。
我不必在运行时等待输入或其他任何东西,它足以发送按键,输入缓冲区将处理其余的内容。
我创建了一个非常简单的bash脚本,该脚本运行一些命令。这些命令之一在运行时需要用户输入。即,它询问用户“您想等等吗?”,我只想向其发送回车按键,以便脚本将完全自动化。
我不必在运行时等待输入或其他任何东西,它足以发送按键,输入缓冲区将处理其余的内容。
Answers:
echo -ne '\n' | <yourfinecommandhere>
或利用echo生成的隐式换行符(感谢Marcin)
echo | <yourfinecommandhere>
现在我们可以简单地使用以下--sk
选项:
--sk
,--skip-keypress
请勿在每次测试后等待按键
即 sudo rkhunter --sk --checkall
xxd
您5c6e
,则将得到十六进制,即字面量\n
。如果这样做的echo | xxd
话,实际上最终会变成十六进制的0a
。因此,我猜想使用您的程序需要的任何东西。
0a0a
的仍然不是预期的,添加了一个-n
隐式换行符。但是,您当然是对的,echo | ...
在这里简单可用。会更新我的答案。
5c6e
?您是否省略了,-e
或者您的外壳echo
是否选择了该选项?
echo -ne "\n" | xxd 0000000: 0a
和echo -n "\n" | xxd 0000000: 5c6e
和 echo "\n" | xxd 0000000: 5c6e 0a
我还没有看到单引号和双引号之间的任何差别。我的shell只是常规的bash,是否有可以调节这种基本功能行为的设置?
您可能会发现该yes
命令很有用。
看到 man yes
yes
我确实发现它很有用。
yes
发送为输出的内容。阅读手册页。
这是使用示例expect
:
#!/usr/bin/expect
set timeout 360
spawn my_command # Replace with your command.
expect "Do you want to continue?" { send "\r" }
检查:man expect
以获取更多信息。
apt-get
,则正确的解决方案是在debconf数据库中使用您的首选值;否则,请执行以下步骤:那它不会问你的