/ / Wpisz ciąg znaków w formacie do polecenia bash - linux, bash

Wpisz ciąg z formatem do polecenia bash - linux, bash

Chciałbym zakodować niektóre wejścia do mojego polecenia skryptu bash. Na przykład mam taki skrypt bash:

#! /bin/bash
apt-get install python

i chciałbym zatrzeć kod y i enter jako dane wejściowe dla apt-get polecenie w tym skrypcie bash, ponieważ czasami użytkownik może poprosić o potwierdzenie miejsca instalacji. Wiem, że mogę to zrobić

apt-get install python <<< "y"

przekazać wejście ciągowe y, ale czy mogę również wprowadzić specjalny format, taki jak nowa linia „n”, używając tej metody? Dzięki!

Odpowiedzi:

2 dla odpowiedzi № 1

Wszystkie tutaj automatycznie kończone są przeznowa linia, więc to może nie robić tego, co chcesz. (Wiele programów sprawdza, czy ich dane wejściowe pochodzą z TTY, i zmienia, czy i jak podpowiadają wynik, inni czytają podpowiedzi, które mają pochodzić od użytkownika bezpośrednio z TTY, a więc całkowicie omijać zawartość piped, heredocs i ciągi znaków.

To powiedziawszy, za dosłowną odpowiedź na pytanie:

apt-get install python <<<$"yn"

Możesz także użyć heredoc:

apt-get install python <<EOF
y

EOF

To powiedziawszy dla konkretnego przypadku apt-get, nie rób tego!

apt-get install -y python

... jest rzeczywiście najlepszą praktyką. (W przypadku poleceń do administrowania systemem generalnie ich twórcy przewidują użycie wsadowe lub automatyczne, więc wprowadzanie danych przez użytkowników końcowych jest rzadko wymagane - zajrzyj do dokumentacji każdego programu pod kątem argumentów, takich jak --batch, --force, --always lub --yes; zmienne środowiskowe, które określają elementy, dla których w przeciwnym razie zostanie wyświetlony monit; lub zachowania aktywowane przez brak sttyfikacji.


2 dla odpowiedzi nr 2

apt-get -y install python jest właściwy sposób. Zgodnie z podręcznikiem:

-y, --yes, - zużyj-tak
Automatyczne tak dla monitów; Przyjmij „tak” jako odpowiedźdo wszystkich podpowiedzi i uruchom nieinteraktywnie. Jeśli jest to niepożądana sytuacja, na przykład zmiana wstrzymanego pakietu, próba zainstalowania nieuwierzytelnionego pakietu lub usunięcie niezbędny pakiet pojawia się wtedy, gdy apt-get przerwie działanie. Element konfiguracji: APT :: Get :: Assume-Yes.