As duas instruções return
na última linha da função podem ser removidas.
[[ -f "$filename" ]]
Esta é a última instrução na função com os return
removidos (observe a expansão da variável citada e o espaço adicionado antes de ]]
). O "valor de saída" da função será o resultado dessa declaração.
Se o arquivo $filename
existir, a função sairá com um valor zero (significando "sucesso", "sim", "ok" etc.), caso contrário, sairá com um valor de um (ou mais geralmente , diferente de zero, significando "falha" de algum tipo).
Não misture ||
e &&
na mesma linha. Em uma linha de comando como
command1 && command2 || command3
o último comando seria executado se qualquer dos comandos anteriores falhasse (retornado diferente de zero).
É melhor escrever
if command1; then
command2
else
command3
fi
se é isso que você quis dizer.
Isso é importante em comandos como
[[ -f "$filename" ]] && echo "exists" || touch "$filename"
Isso tentaria executar o comando touch
se o echo
falhasse, o que pode acontecer se não houver nenhum lugar para a saída da string (ocorre um erro de gravação).