Parece que você está tentando registrar a saída após executar o comando, o que não é possível.
Se você quiser registrar a saída do comando scp
incondicionalmente, basta incluir o operador de redirecionamento na mesma linha do comando em si, ou seja:
&>"${LOG}" scp file1 host@remote
Se você quiser salvar somente a saída do log se o comando falhar (como parece que você está tentando fazer no seu código), então que tal redirecionar a saída para um arquivo temporário e então mover o arquivo para o local desejado? depois? Pode parecer algo assim:
#!/bin/bash
# Set path the real log file location
LOG=/path/to/file.log
# Create a temporary file to capture standard output and standard error
TEMPLOG="$(mktemp)"
# Run command and redirect output to temporary logfile
2>"${TEMPLOG}" scp file1 host@remote
# do 'whatever' if scp command succeeds:
if [ $? = 0 ];
then
echo 'Command successful!'
# else log both stdout/stderr to ${LOG} file
else
# Move the log file from the temporary location to the desired location
mv "${TEMPLOG}" "${LOG}"
# DEBUG - print contents of ${LOG} var for testing purposes
printf "${LOG}"
fi