232 votes

Quelle est la différence entre <<, <<< et << en bash ?

Quelle est la différence entre << , <<< y < < dans bash ?

42voto

muru Points 180007

< < est une erreur de syntaxe :

$ cat < <
bash: syntax error near unexpected token `<'

< <() es substitution de processus ( <() ) combinée à la redirection ( < ):

Un exemple artificiel :

$ wc -l < <(grep ntfs /etc/fstab)
4
$ wc -l <(grep ntfs /etc/fstab)
4 /dev/fd/63

Avec la substitution de processus, le chemin d'accès au descripteur de fichier est utilisé comme un nom de fichier. Si vous ne voulez (ou ne pouvez) pas utiliser un nom de fichier directement, vous pouvez combiner la substitution de processus avec la redirection.

Pour être clair, il n'y a pas de < < de l'opérateur.

19voto

pellea72 Points 323

< < est une erreur de syntaxe, vous voulez probablement dire command1 < <( command2 ) qui est une simple redirection d'entrée suivie d'une substitution de processus et qui est très similaire mais non équivalent à :

command2 | command1

La différence, en supposant que vous exécutiez bash es command1 est exécuté dans un sous-shell dans le second cas, alors qu'il est exécuté dans le Shell actuel dans le premier cas. Cela signifie que les variables définies dans command1 ne serait pas perdue avec la variante de substitution de processus.

15voto

snoop Points 3910

< < donnera lieu à une erreur de syntaxe. L'utilisation correcte est la suivante :

Expliquer à l'aide d'exemples :

Exemple pour < <() :

while read line;do
   echo $line
done< <(ls)

Dans l'exemple ci-dessus, l'entrée de la boucle while provient de l'élément ls qui peut être lu ligne par ligne et echo dans la boucle.

<() est utilisé pour la substitution de processus. Plus d'informations et d'exemples pour <() est disponible sur ce lien :

Substitution de procédés et tuyaux

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X