Peut-on utiliser plusieurs here-docs pour fournir une input à une command dans bash?
$ cat <<<foo <<<bar bar $ cat <<EOF1 <<EOF2 > foo > EOF1 > bar > EOF2 bar
Évidemment, dans les deux cas, le second here-doc est utilisé comme stdin, et remplace la première reference. La solution est-elle d'utiliser les echo
place?
$ cat <(echo -n foo) <(echo bar) foobar
En outre, pour une raison quelconque, l'utilisation d'une combinaison n'a pas fonctionné pour moi. Pourquoi serait-ce?
$ cat <<<foo <(echo bar) bar $ cat <(echo -n foo) <<<bar foo
Tu peux faire:
cat /dev/fd/3 3<< E1 /dev/fd/4 4<< E2 foo E1 bar E2
Il ne peut y avoir qu'un seul stdin, car il n'y a qu'un seul descripteur de file 0.
cat << EOF eof EOF
est court pour:
cat /dev/fd/0 0<< EOF eof EOF
Et:
cat <<< foo
est:
cat /dev/fd/0 0<<< foo
Vous devez vous décider quoi ouvrir sur le descripteur de file 0.
cat <(echo foo)
Est:
cat /dev/fd/123
Où 123
est un descripteur de file à un tube, et en parallèle, bash exécute echo foo
dans un autre process avec le stdout redirigé vers l'autre extrémité du tube.
Une fois que vous passez un nom de file au cat
, le cat
ne lit plus depuis stdin. Vous auriez besoin de:
cat <(echo foo) /dev/fd/0 << EOF bar EOF
Ou:
cat <(echo foo) - << EOF bar EOF
( -
est de dire à cat
de lire à partir de stdin).