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

Но для этого требуется запустить еще одну команду и канал (то есть подоболочку).
Есть ли другой способ, который проще и эффективнее?

Ответы на вопрос(7)

Ваш ответ на вопрос