Bash: dynamicznie przekierowuj standardowe wejście w skrypcie

Próbowałem to zrobić, aby zdecydować, czy przekierować standardowe wejście do pliku, czy nie:

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

Ale to nie działa, ponieważ gdy zmienna $ input ma wartość „& 0”, bash interpretuje ją jako nazwę pliku.

Mogłem jednak zrobić:

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

Problem polega na tym, że ./myScript jest w rzeczywistości długim wierszem poleceń, którego nie chcę duplikować, ani też nie chcę tworzyć dla niego funkcji, ponieważ nie jest to zbyt długie (nie jest tego warte).

Wtedy przyszło mi do głowy:

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

Wymaga to jednak uruchomienia jeszcze jednego polecenia i potoku (tj. Podpowłoki).
Czy jest inny sposób, który jest prostszy i bardziej wydajny?

questionAnswers(7)

yourAnswerToTheQuestion