O erro que você diz que dá ("./myscript.sh: error --- arquivo de log 'filename.log' not found") possui aspas simples ao redor do nome do arquivo, mas o comando que o imprime ( echo "$0: error --- log file $FILE not found" 1>&2
) não os colocou lá. Isso sugere que eles são parte do valor de $ FILE, o que significa que eles estão procurando por eles como parte do nome do arquivo.
Se eu estou certo sobre isso, não é um problema no script, mas em como você está chamando. Então, como você está chamando esse script? Se é algo assim:
cmd="./myscript.sh --loan 'filename.log'"
$cmd
... então esse é o problema, porque citar no bash não funciona dessa maneira; veja BashFAQ # 050: Estou tentando colocar um comando em uma variável, mas os casos complexos sempre falham .