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?