Muszę uruchomić skrypt przez potokiem to przez bash
z wget
(raczej niż uruchomienie go bezpośrednio z bash).
$ wget -O - http://example.com/my-script.sh | bash
To nie działa, ponieważ mój skrypt zawiera read
instrukcje. Z jakiegoś powodu nie działają one podczas wysyłania potoku do bash:
# Piping to bash works in general
$ echo 'hi'
hi
$ echo "echo 'hi'" | bash
hi
# `read` works directly
$ read -p "input: " var
input: <prompt>
# But not when piping - returns immediately
$ echo 'read -p "input: " var' | bash
$
Zamiast monitować input:
i pytać o wartość, jaka powinna, komenda read zostaje pominięta bash
.
Czy ktoś wie, w jaki sposób mogę przesłać skrypt read
do bash
?
Zastąpienie procesu zrobi to, co chcesz:
bash <(wget ...)
To powiedziawszy, muszę tutaj zakwestionować twoją motywację. Jeśli kontrolujesz serwer WWW (i używasz https), może to ma sens. Ale samo uruchomienie skryptu z niewidomego Internetu jest bardzo ryzykowne.
źródło
just running a script from the internet blind is very risky
- Wiemy, że to ryzykowne, ale ludzie mogą ufać skryptom niektórych organizacji. Zobacz dyskusję w komentarzach do odpowiedzi @ Xen2050.Czy coś jest nie tak z:
?
źródło
/tmp
, wiele programów korzysta z plików tymczasowych. Byłbym ostrożny w uruchamianiu pobranych skryptów natychmiast, bez uprzedniego spojrzenia ...