Pourquoi la commande md5sum <<< 'ddd'
(sortie :) est-elle d6d88f2e50080b9602da53dac1102762 -
correcte et md5sum << 'ddd'
non?
Qu'est-ce que ça <<<
veut dire?
la source
Pourquoi la commande md5sum <<< 'ddd'
(sortie :) est-elle d6d88f2e50080b9602da53dac1102762 -
correcte et md5sum << 'ddd'
non?
Qu'est-ce que ça <<<
veut dire?
La <<<
commence une “chaîne ici”: la chaîne est développée et transmise au stdin du programme. (Dans votre cas, il n'y a pas beaucoup d'expansion en cours.) Cela équivaut à ceci:
echo ddd | md5sum
D'autre part, <<
commence un document ici. Toutes les lignes suivantes, jusqu’à une ligne contenant le marqueur ddd
, constitueront l’entrée du programme. (Vous devez utiliser un marqueur qui n’apparaîtra probablement pas dans vos données.) Vous pouvez obtenir le même effet que ci-dessus, comme ceci:
md5sum <<END
ddd
END
Il y a une différence entre <<END
et <<'END'
: sans les guillemets, toutes les variables, séquences d'échappement, etc. du document ici seront étendus comme d'habitude.
rc
,<<<
(comme<<
) utilise un fichier temporaire et peut donc être utilisé par des commandes qui utilisentlseek
leur stdin.<<<
introduit une chaîne here : la chaîne suivante<<<
est transmise en entrée à la commande. Cela provient du port de Byron Rakitzisrc
(un shell Plan 9) vers Unix, et est également présent dans zsh, ksh93 et bash.<<
introduit un document here : les lignes suivantes du script shell sont passées en entrée de la commande et la chaîne suivante<<
est un terminateur. Ici, les documents fonctionnent dans tous les shells Bourne (Bourne, POSIX, Ash, Bash, Ksh, Zsh,…), Shells de style C (csh, tcsh) et Shells Plan 9 (rc, es).la source
<<<
n'est pas uneksh
extension, le chemin estrc
->zsh
->ksh93
->bash
(lesksh
notes de version accusent réception du emprunt pour une foiszsh
).<<
travaille aussi dans lerc
style des coquillagesrc
etzsh
<<<
même si celarc
n'inclut pas un caractère de fin de ligne et n'utilise pas de fichier temporaire (utilise un canal et un processus supplémentaire le chargeant au moins dans le port vers Linux).<<<
du port Unix,rc
car il ne semble pas que le Plan9 l’rc
ait.