2014-08-27 13 views
10

Bardzo prosty skrypt, który instaluje homebrew:Omijanie prompt (naciśnij Return) w homebrew zainstalować skryptu

#!/bin/bash 

    ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)" 

Wyjście daje:

==> This script will install: 
/usr/local/bin/brew 
/usr/local/Library/... 
/usr/local/share/man/man1/brew.1 

Press RETURN to continue or any other key to abort 

Jak naciśnij enter w skrypcie jak to? Czy spodziewałbyś się najlepszej trasy?

+1

Pierwszą rzeczą do zrobienia jest, aby sprawdzić, czy można pominąć, że przekierowanie stdin z '/ dev/null':' -e rubin "$ (curl ...)"

+0

... co oznacza, że ​​jeśli homebrew przerwie się w tym przypadku, możesz zgłosić błąd (lub przesłać poprawkę), ponieważ jest * nie * dobrze zachowany. –

+0

'ruby -e ... <<(tak '')' to inne podejście, które będzie polegało na programie "tak", który będzie stale produkował afirmatywy. Nie rób tego, chyba że '

Odpowiedz

14

Czytanie źródła https://raw.github.com/Homebrew/homebrew/go/install - wyświetla tylko monit, jeśli stdin jest TTY. Jeśli przekierujesz stdin z /dev/null, nie pojawi się on w ogóle. Więc:

ruby \ 
    -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" \ 
    </dev/null 
11

To co yes jest dla:

yes '' | ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)" 
+2

@datasmid Tam * jest * różnica między tymi dwoma, a moje rozwiązanie działa bez polegania na nieudokumentowanej funkcji - że "to tylko monituje, jeśli stdin jest TTY". – l0b0

+1

@ l0b0, oczywiście, ale jeśli nie jest to udokumentowane, że będzie czytane ze standardowego wejścia zamiast czytania z TTY, to nie mamy (udokumentowanej, ciągłej) gwarancji, że zadziała to niezależnie. Jest nieudokumentowane zachowanie polegające na wszystkim. –

+1

@datasmid 'yes' jest i zawsze było udokumentowane; jest częścią GNU Core Utilities. Oznacza to, że jest on zainstalowany w każdym systemie zgodnym z POSIX od początku. To, że go nie używasz, nie oznacza, że ​​nie jest prawdziwe. https://www.gnu.org/software/coreutils/manual/html_node/yes-invocation.html –