Czy jest możliwe, aby skrypt bash automatycznie obsługiwał podpowiedzi, które normalnie byłyby przedstawiane użytkownikowi z domyślnymi akcjami? Obecnie używam skryptu bash, aby wywołać wewnętrzne narzędzie, które wyświetli użytkownikowi podpowiedzi (monitujące o T / N) w celu wykonania czynności, jednak skrypt, który piszę, musi być całkowicie „bezobsługowy”, więc Potrzebuję sposobu, aby wysłać Y|N
do monitu, aby umożliwić kontynuowanie wykonywania programu. czy to możliwe?
109
yes
do tego: unix.stackexchange.com/questions/47344/ ...Odpowiedzi:
To nie jest „autouzupełnianie”, to jest automatyzacja. Jednym z powszechnych narzędzi do tych rzeczy jest oczekiwanie .
Możesz również ujść na sucho, używając tylko wejścia potokowego z
yes
.źródło
yes
załatwił sprawę, na szczęście wszystkie monity i tak wymagały tylko `` y ''. Dzięki.Yes | command
może nie zawsze działać. Jeśli jest to tylko do celów instalacyjnych, skorzystałem-y
z lepszej i preferowanej opcji.Prosty
Pozwala to na przekazanie do skryptu dowolnej sekwencji „Y” lub „N”.
źródło
N
, użyłbym tej metody, ale potrzebowałem tylko Y, więc poszedłem zyes
. Szkoda, że nie mogę przyjąć dwóch odpowiedzi, ponieważ obie są poprawne.N
, teraz masz dobry sposób, aby to zrobić."Y N"
jako wejście do pierwszej zachęty i zawiesza się w drugiej, czekając na jej zakończenie. Próbowałem zmienić spacje na znaki nowej linii, ale to też nie zadziałało, nadal podawałem dosłowny ciąg do zachęty.printf 'y\ny\ny\n' | ./your_script
. W ten sposób ręcznie wstawiasz nową linię dla każdego oczekiwanego wpisu.printf '%s\n' Y Y N N Y N Y Y N
umieszcza znaki nowej linii między elementami, ale bez potrzeby jednego łańcucha dużego formatu.Odkryłem, że najlepszym sposobem wysyłania danych wejściowych jest użycie kota i pliku tekstowego, aby przekazać potrzebne dane wejściowe.
źródło
Jeśli masz tylko Y do wysłania:
Jeśli masz tylko N do wysłania:
źródło
W mojej sytuacji musiałem odpowiedzieć na kilka pytań bez T lub N, ale z tekstem lub puste. W mojej sytuacji najlepszym sposobem na zrobienie tego jest utworzenie pliku skryptu powłoki. W moim przypadku nazwałem to autocomplete.sh
Musiałem odpowiedzieć na kilka pytań dotyczących eksportera schematu doktryny, więc mój plik wyglądał tak.
- To jest tylko przykład -
To, co mi się podoba w tej strategii, to to, że możesz komentować swoje odpowiedzi, a używając EOF pusta linia jest po prostu taka (domyślna odpowiedź). Okazuje się, że to narzędzie eksportera ma swój własny odpowiednik JSON do odpowiedzi na te pytania, ale doszedłem do tego po tym, jak to zrobiłem =).
aby uruchomić skrypt, po prostu znajdź się w wybranym katalogu i uruchom
'sh autocomplete.sh'
w terminalu.Krótko mówiąc, używając << EOL i EOF w połączeniu z liniami zwrotnymi możesz odpowiedzieć na każde pytanie monitu, jeśli to konieczne. Każdy nowy wiersz to nowa odpowiedź.
Mój przykład pokazuje tylko, jak można to zrobić za pomocą komentarzy, również używając znaku `, abyś pamiętał, czym jest każdy krok.
Zwróć uwagę, że inną zaletą tej metody jest to, że możesz odpowiedzieć, używając więcej niż tylko T lub N ... w rzeczywistości możesz odpowiedzieć spacjami!
Mam nadzieję, że to komuś pomoże.
źródło
Jest do tego specjalne narzędzie wbudowane - „ tak ”.
Aby odpowiedzieć na wszystkie pytania tą samą odpowiedzią, możesz uruchomić
Lub możesz umieścić go w swoim skrypcie, aby uzyskać konkretną odpowiedź na każde pytanie
źródło