Réponses:
./Myscript.sh "$(cat text.txt)"Essayer,
 $ cat comli.txt
 date
 who
 screen
 wget
 $ cat comli.sh
 #!/bin/bash
 which $1
 $ for i in `cat comli.txt` ; do ./comli.sh $i ; doneafin que vous puissiez saisir les valeurs une à une à comli.shpartir de comli.txt.
Substitution de processus
./Myscript.sh <(cat text.txt)Voir par exemple https://www.gnu.org/software/bash/manual/bash.html#Process-Substitution
En lisant stdin avec mapfile, vous pouvez réinitialiser les paramètres de position.
#!/bin/bash
[[ -p /dev/stdin ]] && { mapfile -t; set -- "${MAPFILE[@]}"; }
for i in $@; do
    echo "$((++n)) $i"
done
(Citer "$ @" créera des forlignes de boucle à la place).
$ cat test.txt | ./script.sh
1 one
2 two
3 treePour compléter @ bac0n dont l'IMHO est le seul à répondre correctement à la question, voici un raccourci qui ajoutera des arguments canalisés à votre liste d'arguments de script:
#!/bin/bash
args=$@
[[ -p /dev/stdin ]] && { mapfile -t; set -- "${MAPFILE[@]}"; set -- $@ $args; }
echo $@Exemple d'utilisation:
$ ./script.sh arg1 arg2 arg3
> arg1 arg2 arg3
$ echo "piped1 piped2 piped3" | ./script.sh
> piped1 piped2 piped3
$ echo "piped1 piped2 piped3" | ./script.sh arg1 arg2 arg3
> piped1 piped2 piped3 arg1 arg2 arg3