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?