Bash: перенаправить стандартный ввод динамически в скрипте
Я пытался сделать это, чтобы решить, следует ли перенаправить стандартный ввод в файл или нет:
[ ...some condition here... ] && input=$fileName || input="&0"
./myScript < $input
Но это не работает, потому что когда переменная $ input имеет значение «& 0», bash интерпретирует его как имя файла.
Тем не менее, я мог бы просто сделать:
if [ ...condition... ];then
./myScript <$fileName
else
./myScript
Проблема в том, что ./myScript - это на самом деле длинная командная строка, которую я не хочу дублировать, и при этом я не хочу создавать для нее функцию, потому что она тоже не такая длинная (это того не стоит).
Тогда мне пришло в голову сделать это:
[ ...condition... ] && input=$fileName || input= #empty
cat $input | ./myScript
Но для этого требуется запустить еще одну команду и канал (то есть подоболочку).
Есть ли другой способ, который проще и эффективнее?