Вы должны просто инициализировать файл с
FILE=${1:-/var/www/iphorex/live/infi_script.txt}
и затем пропустить проверку существования.Если файл не существует или недоступен для чтения, exec 0 <завершится с ошибочным сообщением об ошибке (нет смысла пытаться угадать, каким будет сообщение об ошибке, просто дайте оболочке сообщить об ошибке.) </p>
Мне кажется, проблема в том, что оболочка на отказавшем сервере не похожа на "==" в тесте на равенство.(Многие реализации теста принимают только один «=», но я подумал, что даже в более старом bash есть встроенная функция, которая принимает два «==», так что я могу быть далеко от базы.) Я бы просто исключил ваши строки из FILE = "" вплоть доконец проверки существования и замените их приведенным выше назначением, позволяя стандартному механизму оболочки работать на вас.
Обратите внимание, что если вы отмените проверку существования, вам нужно либо добавить
set -e
в верхней части скрипта или добавьте проверку на exec:
exec 0<"$FILE" || exit 1
, чтобы скрипт не продолжался, если файл не используется.