Bash: Leiten Sie die Standardeingabe dynamisch in ein Skript um

Ich habe versucht, dies zu tun, um zu entscheiden, ob stdin in eine Datei umgeleitet werden soll oder nicht:

[ ...some condition here... ] && input=$fileName || input="&0"
./myScript < $input

Dies funktioniert jedoch nicht, da Bash, wenn die Variable $ input "& 0" ist, sie als Dateinamen interpretiert.

Ich könnte jedoch einfach Folgendes tun:

if [ ...condition... ];then
    ./myScript <$fileName
else
    ./myScript

Das Problem ist, dass ./myScript eigentlich eine lange Befehlszeile ist, die ich weder duplizieren noch eine Funktion dafür erstellen möchte, weil sie auch nicht so lang ist (es lohnt sich nicht).

Dann fiel mir ein:

[ ...condition... ] && input=$fileName || input=  #empty
cat $input | ./myScript

Dazu müssen Sie jedoch einen weiteren Befehl und eine Pipe (d. H. Eine Subshell) ausführen.
Gibt es einen einfacheren und effizienteren Weg?

Antworten auf die Frage(7)

Ihre Antwort auf die Frage