Por que o comando md5sum <<< 'ddd'
(output :) está d6d88f2e50080b9602da53dac1102762 -correto e md5sum << 'ddd'não?
O que <<<significa isso ?
Por que o comando md5sum <<< 'ddd'
(output :) está d6d88f2e50080b9602da53dac1102762 -correto e md5sum << 'ddd'não?
O que <<<significa isso ?
Respostas:
Os <<<inicia um “aqui string”: A corda é expandido e alimentado para stdin do programa. (No seu caso, não há muita expansão acontecendo.) É equivalente a isso:
echo ddd | md5sum
Por outro lado, <<inicia um documento aqui. Todas as seguintes linhas, até uma que contenha o marcador ddd, incluirão a entrada do programa. (Você deve usar um marcador que provavelmente não aparecerá nos seus dados.) Você pode obter o mesmo efeito acima, desta forma:
md5sum <<END
ddd
END
Há uma diferença entre <<ENDe <<'END': Sem as aspas, quaisquer variáveis, seqüências de escape etc. no documento aqui serão expandidas como de costume.
<<<introduz uma string here : a string after <<<é passada como entrada para o comando. Isso se origina no porto de rc(um shell do Plano 9) de Byron Rakitzis para o Unix e também está presente no zsh, ksh93 e bash.
<<apresenta um documento here : as linhas subseqüentes do shell script são passadas como entrada para o comando e a string after <<é um terminador. Aqui, os documentos funcionam em todos os shells no estilo Bourne (Bourne, POSIX, ash, bash, ksh, zsh,…), shells no estilo C (csh, tcsh) e shells no plano 9 (rc, es).
<<<não é uma kshextensão, o caminho é rc-> zsh-> ksh93-> bash(as kshnotas de versão reconhecem por emprestar o recurso uma vez zsh). <<Também funciona em rcconchas de estilo
rce, zsh <<<embora rcisso não inclua um caractere de nova linha à direita e não use um arquivo temporário (usa um pipe e um processo extra para alimentá-lo pelo menos na porta do Linux).
<<<vem da porta Unix rc, já que não parece com o Plan9 rc.
rc,<<<(como<<) usa um arquivo temporário para que possa ser usado por comandos quelseekseus stdin.