提问人:Ooker 提问时间:3/14/2014 最后编辑:Ooker 更新时间:6/21/2022 访问量:36877
当被问到时,如何在 bash 脚本中自动按 Enter?
How to automatically hit Enter in bash script when asked?
问:
我知道这个问题已经回答了很多次,但我仍然不知道该怎么做。也许是因为我不知道要搜索的正确关键字。
用
echo -ne '\n' | enter
不起作用。我的代码是:
#! /bin/bash
#Grub-customizer
sudo add-apt-repository ppa:danielrichter2007/grub-customizer
echo -ne '\n' | return
sudo apt-get update
sudo apt-get install grub-customizer
答:
26赞
Thomas Orozco
3/14/2014
#1
你应该通过管道将 到将要接收它的命令中(否则它永远不会看到它!\n
echo -ne '\n' | sudo add-apt-repository ppa:danielrichter2007/grub-customizer
echo -ne '\n' | sudo apt-get install grub-customizer
现在,正确的解决方案是改用标志:-y
sudo add-apt-repository -y ppa:danielrichter2007/grub-customizer
sudo apt-get install -y grub-customizer
评论
2赞
Charles Duffy
3/14/2014
管道可能工作也可能不工作 - 您知道 apt-get 和 apt-add-repository 从 stdin 读取而不是吗?最好更强烈地加强旗帜建议,这是一件更确定的事情。/dev/tty
-y
0赞
Thomas Orozco
3/14/2014
@CharlesDuffy 添加了这些示例。然而,我怀疑 apt 在大多数情况下会使用,但肯定会破坏使用 .stdin
DEBIAN_FRONTEND
echo
4赞
tripleee
3/14/2014
虽然是问题描述的忠实副本,但惯用的写作方式只是.echo -ne '\n'
echo
1赞
tripleee
3/14/2014
我会将解决方案作为主要答案发布,并将修复作为切线评论发布。-y
echo
1赞
Tanjin Alam
6/21/2022
#2
'echo -ne "\n" | ./create.sh \n', // this command is for pressing enter each time the shell script is asking user to press enter
'echo -ne "\n" | yourcommand \n', //tempate
const client = new Client();
const cmds = [
'ls -lah \n', // \n is important
'cd /mnt \n',
'echo -ne "\n" | ./create.sh \n', // this command is for pressing enter each time the shell script is asking user to press enter
'pwd \n',
'ls -lah \n',
'exit \n',
];
client.on('ready', () => {
console.log('Client :: ready');
client.shell((err, stream) => {
stream.on('close', (code) => {
console.log('stream :: close\n', { code });
}).on('data', (myData) => {
console.log('stream :: data\n', myData.toString());
}).on('exit', (code) => {
console.log('stream :: exit\n', { code });
client.end();
}).on('error', (e) => {
console.log('stream :: error\n', { e });
rej(e);
});
for (let i = 0; i < cmds.length; i += 1) {
const cmd = cmds[i];
stream.write(`${cmd}`);
}
});
}).connect({
host: '127.0.0.1',
port: 22,
username: 'root',
password: 'root',
});
参考资料 点击这里
评论
echo | some_command
echo
some_command
some_command
enter
return