Stworzyłem naprawdę prosty skrypt bash, który uruchamia kilka poleceń. jedno z tych poleceń wymaga wprowadzenia danych przez użytkownika w czasie wykonywania. tzn. pyta użytkownika „czy chcesz bla bla bla?”, chcę po prostu wysłać do niego klawisz enter, aby skrypt został całkowicie zautomatyzowany.
Nie będę musiał czekać na dane wejściowe ani nic w trakcie działania, wystarczy, że wyślę naciśnięcie klawisza, a bufor wejściowy zajmie się resztą.
apt-get
, właściwym rozwiązaniem jest wprowadzenie w bazie danych debconf preferowanych wartości; to cię nie zapyta.Odpowiedzi:
lub korzystając z niejawnej nowej linii generowanej przez echo (dzięki Marcin)
Teraz możemy po prostu skorzystać z
--sk
opcji:to znaczy
sudo rkhunter --sk --checkall
źródło
xxd
, otrzymasz5c6e
hex, który jest literałem\n
. jeśli to zrobiszecho | xxd
, w rzeczywistości otrzymasz heks0a
. Więc myślę, że użyj tego, czego potrzebuje twój program.0a0a
co nadal nie jest zgodne z zamierzeniem, dodając-n
ukrytą nową linię. Ale masz oczywiście rację, zwykłyecho | ...
tutaj działa dobrze. Zaktualizuję moją odpowiedź.5c6e
? Czy pominąłeś,-e
czy twoja powłoka czyecho
nie traktuje tej opcji?echo -ne "\n" | xxd 0000000: 0a
iecho -n "\n" | xxd 0000000: 5c6e
iecho "\n" | xxd 0000000: 5c6e 0a
nie widziałem żadnej różnicy między pojedynczymi i podwójnymi cudzysłowami. Moja powłoka to zwykłe bash, czy są ustawienia, które regulowałyby zachowanie tak podstawowej funkcjonalności?yes
Polecenie może okazać się przydatne.Widzieć
man yes
źródło
yes
Uważam, że to przydatne.yes
wysyła jako wyjście. Przeczytaj stronę podręcznika.Możesz po prostu użyć tak .
źródło
Oto przykładowe użycie
expect
:Sprawdź:
man expect
dalsze informacje.źródło
Możesz wykorzystać oczekiwanie ( człowiek oczekuje z przykładami).
źródło