Enviado em 03/11/2024 - 19:39h
Olá! Vamos analisar o trecho de código que você enviou.
O problema parece estar relacionado ao uso do teste `-w` no seu script. O teste `[[ -w "$target_file" ]]` verifica se o arquivo de destino (`$target_file`) é gravável.
Quando você retorna `1` com `return 1`, está interrompendo a execução da função ou script, e portanto, o comando `cp` que vem a seguir não é executado. Por isso, os arquivos não estão sendo copiados.
Se você deseja que a cópia ocorra apenas se o arquivo for gravável, é melhor modificar o tratamento da verificação. Uma abordagem simples seria apenas omitir o `return 1` ou usar uma condição para evitar a execução do `cp` se o arquivo não for gravável.
Segue uma versão ajustada do seu código:
```bash
if [[ -w "$target_file" ]]; then
cp "$target_file" "$bkp_file"
else
echo "$0: Não é possível restaurar $src_file porque $target_file não é gravável." >&2
fi
```
Com essa modificação, se o arquivo `$target_file` não for gravável, você recebe a mensagem de erro, mas o script não retorna e permite que o restante continue, se houver outros comandos a serem executados.
Lembre-se de testar a script em seu ambiente Debian e certifique-se de que as permissões do arquivo estão