O redirecionamento >
é feito por shell, não por echo
. Na verdade, o shell faz o redirecionamento antes que o comando seja iniciado e, por padrão, o shell substituirá qualquer arquivo com esse nome, se existir.
Você pode evitar a sobrescrita por shell se existir algum arquivo usando a opção noclobber
shell:
set -o noclobber
Exemplo:
$ echo "new text" > existing_file.txt
$ set -o noclobber
$ echo "another text" > existing_file.txt
bash: existing_file.txt: cannot overwrite existing file
Para cancelar a opção:
set +o noclobber
Você não terá nenhuma opção de usar a entrada do usuário para sobrescrever qualquer arquivo existente, sem fazer algo manual como definir uma função e usá-la sempre.