[英]How do I script a "yes" response for installing programs?
我使用 Amazon Linux 實例,我有幾個腳本來填充數據並安裝我使用的所有程序,但有幾個程序會詢問:
Do you want to continue [Y/n]?
並暫停安裝。 我想在所有情況下都自動回答“Y”,我現在才知道該怎么做。
“是”命令將無限期地回顯“y”(或您要求的任何內容)。 將其用作:
yes | command-that-asks-for-input
或者,如果需要大寫“Y”:
yes Y | command-that-asks-for-input
如果你想通過 'N' 你仍然可以使用yes
:
yes N | command-that-asks-for-input
echo y | command
echo y | command
應該可以工作。
此外,一些安裝程序有一個“自動是”標志。 它是-y
用於 Ubuntu 上的apt-get
。
您可能無法在目標服務器上安裝 Expect。 例如,當一個人編寫一份 Jenkins 工作時,通常就是這種情況。
如果是這樣,我會考慮在 askubuntu.com 上對以下問題的回答:
https://askubuntu.com/questions/338857/automatically-enter-input-in-command-line
printf 'y\nyes\nno\nmaybe\n' | ./script_that_needs_user_input
請注意,在極少數情況下,該命令不需要用戶在字符后按 Enter。 在這種情況下,請忽略換行符:
printf 'yyy' | ./script_that_needs_user_input
為了完整起見,您還可以使用此處的文檔:
./script_that_needs_user_input << EOF
y
y
y
EOF
或者,如果您的 shell 支持此處的字符串:
./script <<< "y
y
y
"
或者您可以創建一個每行一個輸入的文件:
./script < inputfile
同樣,此答案的所有功勞都歸功於askubuntu.com上的答案作者 lesmana。
您只需要在安裝命令中加上-y
。
例如: yum install <package_to_install> -y
盡管這可能比您想要的更復雜/更重,但一種非常靈活的方法是使用諸如Expect (或另一種編程語言中的派生詞之一)之類的方法。
Expect 是一種專為控制基於文本的應用程序而設計的語言,這正是您想要做的。 如果你最終需要做一些更復雜的事情(比如用邏輯來實際決定下一步做什么/回答什么),Expect 是你要走的路。
如果您只想接受默認值,您可以使用:
\n | ./shell_being_run
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.