Bash: redireciona a entrada padrão dinamicamente em um script
Eu estava tentando fazer isso para decidir se redirecionar stdin para um arquivo ou não:
[ ...some condition here... ] && input=$fileName || input="&0"
./myScript < $input
Mas isso não funciona porque quando a variável $ input é "& 0", o bash interpreta como um nome de arquivo.
No entanto, eu poderia apenas fazer:
if [ ...condition... ];then
./myScript <$fileName
else
./myScript
O problema é que ./myScript é na verdade uma longa linha de comando que eu não quero duplicar, nem quero criar uma função para ela, porque ela também não é longa (não vale a pena).
Então me ocorreu fazer isso:
[ ...condition... ] && input=$fileName || input= #empty
cat $input | ./myScript
Mas isso requer a execução de mais um comando e um pipe (ou seja, um subshell).
Existe outra maneira mais simples e eficiente?