Riga di comando: <<< anziché <<


63

Perché il comando md5sum <<< 'ddd' (output:) è d6d88f2e50080b9602da53dac1102762 -giusto e md5sum << 'ddd'non?

Cosa <<<significa?

Risposte:


45

Le <<<inizia un “qui stringa”: la stringa viene ampliato ed alimentati allo stdin del programma. (Nel tuo caso, non sta avvenendo molto di espansione.) È equivalente a questo:

echo ddd | md5sum

D'altra parte, <<inizia un documento qui. Tutte le seguenti righe fino a una contenente il marker dddincluderanno l'input del programma. (Dovresti usare un marcatore che non è probabile che appaia nei tuoi dati.) Potresti ottenere lo stesso effetto di cui sopra in questo modo:

md5sum <<END
ddd
END

C'è una differenza tra <<ENDe <<'END': senza le virgolette, qualsiasi variabile, sequenza di escape ecc. Nel documento qui verrà espansa come al solito.


3
Dove non è equivalente è che tranne in rc, <<<(like <<) usa un file temporaneo in modo che possa essere utilizzato dai comandi che il lseekloro stdin.
Stéphane Chazelas,

32

<<<introduce una stringa qui : la stringa dopo <<<viene passata come input al comando. Ciò ha origine nel porto di Byron Rakitzis di rc(una shell Plan 9) con Unix, ed è presente anche in zsh, ksh93 e bash.

<<introduce un documento qui : le righe successive dello script della shell vengono passate come input al comando e la stringa successiva <<è un terminatore. Qui i documenti funzionano in tutte le shell in stile Bourne (Bourne, POSIX, ash, bash, ksh, zsh, ...), shell in stile C (csh, tcsh) e shell Plan 9 (rc, es).


3
No, <<<non è kshun'estensione, il percorso è rc-> zsh-> ksh93-> bash(le kshnote di rilascio riconoscono per aver preso in prestito la funzione da zsh). <<funziona anche con rcconchiglie di stile
Stéphane Chazelas,

C'è una differenza tra il rce zsh <<<sebbene rcciò non includa un carattere newline finale e non usi un file temporaneo (usa una pipe e un processo extra che lo alimenta almeno nella porta su Linux).
Stéphane Chazelas,

Per essere più precisi, sembra che <<<provenga dalla porta Unix rcin quanto non sembra che Plan9 lo rcabbia.
Stéphane Chazelas,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.