В сценарии Linux Shell я пытаюсь отследить состояние каждой команды («Успешно» или «Сбой») в файле журнала.
Ниже приведен фрагмент кода для записи записей в файл журнала.
scp $user@$host:$from $to 2>error.txt
command_run_status=$?
if [[ $command_run_status == 0 ]]; then log_message="secure copy on ("${host}") with ("${user}") is successful"; else log_message="error copying files "`cat error.txt`; fi
./logging.sh "$CURRENT_PID" "$log_message" "D"
Файл журнала создается с записью, приведенной ниже:
DEBUG 2019-06-21 10:05:35,347 BST [pid1234] [autouser]: error copying files usage: scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit] [-o ssh_option] [-P port] [-S program] [[user@]host1:]file1 [...] [[user@]host2:]file2
Однако я ожидаю записи в журнале, как показано ниже - содержимое файла error.txt с символом новой строки.
DEBUG 2019-06-21 10:05:35,347 BST [pid1234] [autouser]: error copying files
usage: scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
[-l limit] [-o ssh_option] [-P port] [-S program]
[[user@]host1:]file1 [...] [[user@]host2:]file2
Содержимое error.txt приведено ниже:
usage: scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
[-l limit] [-o ssh_option] [-P port] [-S program]
[[user@]host1:]file1 [...] [[user@]host2:]file2
Может ли кто-нибудь прокомментировать причину отображения содержимого многострочного файла, отображаемого в одной строке в файле журнала?
Какие изменения необходимы в команде для печати содержимого файла ошибок (с символом новой строки) в файле журнала?