Quelle est la différence entre <<
, <<<
y < <
dans bash ?
Réponses
Trop de publicités?< <
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.
< <
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.
< <
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 :