¿Por qué el comando md5sum <<< 'ddd'
(salida :) es d6d88f2e50080b9602da53dac1102762 -
correcto y md5sum << 'ddd'
no?
Que <<<
significa
fuente
¿Por qué el comando md5sum <<< 'ddd'
(salida :) es d6d88f2e50080b9602da53dac1102762 -
correcto y md5sum << 'ddd'
no?
Que <<<
significa
Los <<<
inicia una “cadena aquí”: la cadena se expande y se alimentan a la entrada estándar del programa. (En su caso, no está ocurriendo mucha expansión). Es equivalente a esto:
echo ddd | md5sum
Por otro lado, <<
comienza un documento aquí. Todas las siguientes líneas hasta una que contenga el marcador ddd
comprenderán la entrada del programa. (Debería usar un marcador que probablemente no aparezca en sus datos). Podría lograr el mismo efecto que el anterior de la siguiente manera:
md5sum <<END
ddd
END
Hay una diferencia entre <<END
y <<'END'
: sin las comillas, cualquier variable, secuencia de escape, etc. en el documento aquí se expandirá como de costumbre.
rc
,<<<
(like<<
) utiliza un archivo temporal, por lo que puede ser utilizado por comandos quelseek
su stdin.<<<
introduce una cadena aquí : la cadena posterior<<<
se pasa como entrada al comando. Esto se origina en el puerto de Byron Rakitzis derc
(un shell del Plan 9) a Unix, y también está presente en zsh, ksh93 y bash.<<
introduce un documento aquí : las líneas posteriores del script de shell se pasan como entrada al comando y la cadena posterior<<
es un terminador. Aquí los documentos funcionan en todos los shells de estilo Bourne (Bourne, POSIX, ash, bash, ksh, zsh, ...), shells de estilo C (csh, tcsh) y shells de Plan 9 (rc, es).fuente
<<<
no es unaksh
extensión, la ruta esrc
->zsh
->ksh93
->bash
(lasksh
notas de la versión reconocen por una vez que toman prestada la funciónzsh
).<<
también funciona enrc
conchas de estilorc
yzsh
<<<
aunque en esorc
no incluye un carácter de nueva línea final y no usa un archivo temporal (usa una tubería y un proceso adicional que lo alimenta al menos en el puerto a Linux).<<<
proviene del puerto Unix,rc
ya que no parece que el Plan9 lorc
tenga.