Você precisa colocar a variável entre aspas, caso contrário, as novas linhas serão tratadas como separadores de palavras e toda a saída estará em uma única linha:
echo "$ACTUAL_DIFF" | cut -f2,3 -d" "
Outra maneira de fazer isso seria sem a variável, apenas canalizar diff
diretamente para cut
:
diff file.current file.previous 2>/dev/null | cut -f2,3 -d" "
Você pode usar o comando cmp
mais simples no começo apenas para testar se os arquivos são diferentes.
E para colocar a saída em um arquivo enquanto o exibe, use o comando tee
.
#Compare files and redirect output
ACTUAL_DIFF='diff file.current file.previous 2>/dev/null'
if ! cmp -s file.current file.previous 2>/dev/null
then
echo "Comparing /tmp/file.current state (<) to /tmp/file.previous state (>), difference is: "
echo ""
diff file.current file.previous 2>/dev/null | cut -f2,3 -d" " | tee /tmp/file.diff
echo ""
else
echo "The current file state is identical to the previous run (on 'ls -l file.previous | cut -f6,7,8 -d" "') OR this is the initial run!"
echo ""
cat /tmp/file.diff
echo ""
fi