Я пишу несколько простых утилит резервного копирования в Bash, и любой вывод должен быть в формате JSON.
Я проверяю доступность хоста и, если возникает какая-либо ошибка, я хочу распечатать ее. Тем не менее, у меня есть проблема с выводом:
FAILED=1 TIME_STARTED=$(date +%s) OUT="$( ${SSH} ${SSH_ARGS} ${HOST} 'true' 2>&1 >/dev/null)" if [[ $? != 0 && ! -z "${OUT}" ]]; then TIME_ENDED=$(date +%s) JSON="{ \"time_started\": \"${TIME_STARTED}\", \"time_ended\": \"${TIME_ENDED}\", \"state\": ${FAILED}, \"error\": \"${OUT}\" }" echo "${JSON}" exit ${TRUE} fi
результаты в:
[root@internal ~]# ./backup -H 17.17.0.111 " }time_started": "1394889912", "time_ended": "1394889913", "state": 1, "error": "Permission denied (publickey,password,keyboard-interactive). [root@internal]#
Я использую некоторые утилиты CLI для node.js, чтобы красиво печатать JSON для окончательного вывода, но это не удается, потому что он получает недопустимый JSON из оболочки. Как мне это исправить?
PS: я знаю, что есть много библиотек для форматирования JSON, но я должен сделать это таким образом, и я хотел бы не обсуждать это здесь.