Linha de comando: em vez de

53

Por que o comando md5sum <<< 'ddd' (saída: d6d88f2e50080b9602da53dac1102762 - ) direita e md5sum << 'ddd' não?

O que significa <<< ?

    
por Jean Paulus 19.05.2013 / 23:29

2 respostas

42

O <<< inicia uma "string aqui": a string é expandida e alimentada para o stdin do programa. (No seu caso, não há muita expansão acontecendo.) É equivalente a isto:

echo ddd | md5sum

Por outro lado, << inicia um documento aqui. Todas as linhas a seguir, até uma contendo o marcador ddd , incluirão a entrada do programa. (Você deve usar um marcador que não é provável que apareça em seus dados.) Você poderia obter o mesmo efeito acima, assim:

md5sum <<END
ddd
END

Existe uma diferença entre <<END e <<'END' : Sem as aspas, quaisquer variáveis, seqüências de escape etc. no documento aqui serão expandidas como de costume.

    
por 19.05.2013 / 23:38
29

<<< introduz uma string aqui : a string após <<< é passado como entrada para o comando. Isso tem origem na porta de Byron Rakitzis de rc (um shell do Plan 9) para o Unix, e também está presente em zsh, ksh93 e bash.

<< apresenta um documento aqui : linhas subsequentes do shell script são passados como entrada para o comando, e a string após << é um terminador. Aqui os documentos funcionam em todos os shells ao estilo Bourne (Bourne, POSIX, ash, bash, ksh, zsh, ...), shells no estilo C (csh, tcsh) e Plan 9 (rc, es).

    
por 19.05.2013 / 23:37