簡體   English   中英

如何為安裝程序編寫“是”響應腳本?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM