2011-09-14 54 views
11

我在寫一個Linux Shell腳本來自動執行我在Ubuntu 11.04上做的一些事情。在Linux shell腳本中處理輸入確認

基本上,我正在編寫一個shell腳本來安裝NGINX,MySQL和PHP,然後配置一切。我知道如何通過命令行來做所有事情。

但是,我不知道我將如何處理過程要求用戶輸入的部分。例如,我用apt-get安裝的某些東西要求您確認,即(Y)es或(N)o。

我該如何處理shell腳本中的自動確認,即在被問到時自動確認是或否?

+0

重複? http://stackoverflow.com/questions/226703/how-do-i-prompt-for-input-in-a-linux-shell-script(希望它有幫助!) – heltonbiker

+0

@heltonbiker:我沒有試圖得到從shell腳本的用戶輸入,我試圖強制/輸入任何腳本通常會促使我提供Yes或No響應的地方。 –

+0

你是對的,我看錯了,對不起。 – heltonbiker

回答

15

yes | ./script將回答y的一切。

否則,編寫一個腳本,打印你想要的答案,如:

echo N 
echo Y 
echo Y 
+1

感謝您的選擇。我不確定我會如何構建腳本來完成這個任務,你有代碼示例嗎? –

+0

如果你不想總是回答'是',我不會真的回答你的問題,因爲它完全取決於個案。如果您想對腳本回答「是是否」,只需:'printf「y \ ny \ nn \ n」| ./ your_script'或者用獨立的行寫一個簡單的腳本來打印每個答案,然後:'./answer_script | 。/ the_script' – wormsparty

+0

非常感謝。我想我現在有多種選擇,以防萬一我想針對不同的提示做出不同的回答。這似乎是最好的方式來做我想做的事情,因爲我只需要用腳本調用它一次。 –

4

通常,您可以調用此類交互式程序,並選擇自動回答所有問題的選項。例如,您可以撥打apt-get-y。從手冊頁:

-y,--yes,--assume-yes 自動提示是;假設「是」作爲所有提示的答案,並非交互地運行 。

+0

謝謝。這正是我正在尋找的。 –

1

嘗試Expect它可能是你在找什麼。

+0

非常感謝,看起來非常有趣。我需要確切知道提示是什麼,即如果我在shell腳本中運行的命令將執行「輸入您的出生日期:」這樣的命令,我是否必須編寫Expect「輸入您的出生日期:「正如提示會要求它?! –

+0

據我所知 - 是的 – LordDoskias