![ubuntu 终端中无人值守的脚本执行](https://linux22.com/image/17971/ubuntu%20%E7%BB%88%E7%AB%AF%E4%B8%AD%E6%97%A0%E4%BA%BA%E5%80%BC%E5%AE%88%E7%9A%84%E8%84%9A%E6%9C%AC%E6%89%A7%E8%A1%8C.png)
我在VMWare虚拟机上安装了Ubuntu。
当我开始安装 VMWare 工具时,我偶然发现了一个简单的问题:
如果我执行一个脚本(VMWare工具中的perl脚本),有没有办法让我事先告诉执行,如果它提示我输入,鉴于它有一个默认值,它只是使用它,而不是等待让我按 Enter 键?
答案1
yes
是为此目的而设计的;它连续向标准输出输出相同的字符串,因此您可以将其传输到另一个脚本中,并且它将对每个提示保持相同的答案。默认情况下,y
它可以对提示说“是”,但如果您只想让它每次发送换行符,您可以将空字符串作为参数传递给它:
$ yes '' | vmware-script
答案2
要么修补源以具有默认值,要么使用此处文档或此处字符串将您的输入发送到脚本的stdin
:
./script << EOF
answer 1
answer 2
...
answer N
EOF
某些程序可能不接受此操作(通常是处理身份验证的程序,出于安全目的可能会禁用此操作)。在这种情况下,请考虑使用类似的东西expect
。