mkdir -p $FINAL_BACKUP_DIR
나는 stderr 통신 을 얻고 logger
.
이는 로그를 더욱 완전하게 만듭니다. 예를 들어 사용자는 자신에게 권한이 없거나 $FINAL_BACKUP_DIR
존재하지 않는다는 사실을 알게 됩니다.
if ! mkdir -p $FINAL_BACKUP_DIR; then
logger -t $LOGGER_TAG "Cannot create backup directory in $FINAL_BACKUP_DIR. Standard error communicate. Backup canceling." 1>&2
exit 1;
fi;
나는 다음과 같은 것을 시도합니다 :
if ! mkdir -p $FINAL_BACKUP_DIR 2>> ${test1}; then
logger -t $LOGGER_TAG "Cannot create backup directory in $FINAL_BACKUP_DIR. Backup canceling. $test1" 1>&2
exit 1;
fi;
하지만 이 솔루션은 두 가지 면에서 나에게 적합하지 않습니다. 내가 test1
더 일찍 만들었을 때인 test1=0
지 아닌지.
우분투 14.04를 사용합니다.
답변1
/dev/null
"물건을 버리기" 위한 표준 장치입니다.
그래서
some_command 2> /dev/null
some_command
에서 로 오류를 보냅니다 /dev/null
. 즉, 오류를 삭제합니다.
그러므로:
if ! mkdir -p $FINAL_BACKUP_DIR 2> /dev/null
then
logger -t $LOGGER_TAG "Cannot create backup directory in $FINAL_BACKUP_DIR. Backup canceling."
exit 1
fi
추가 문자가 모두 필요하지는 않습니다 ;
. :-)
편집하다:
또한 오류를 출력하여 변수에 결과를 캡처하고 변수가 비어 있는지 테스트할 수도 있습니다. 이렇게 하면 사용자에게 이유를 알릴 수 있습니다.
result=$(mkdir -p $FINAL_BACKUP_DIR 2>&1)
if [ -n "$result" ]
then
logger -t $LOGGER_TAG "Cannot create backup directory in $FINAL_BACKUP_DIR. Backup canceling: $result"
exit 1
fi
답변2
노력하다
if ! mkdir -p $FINAL_BACKUP_DIR > ${test1} 2>&1
then
logger -t $LOGGER_TAG "Cannot create backup directory in $FINAL_BACKUP_DIR. Backup canceling. $(< ${test1})"
exit 1;
fi;
어디
> ${test1}
출력 리디렉션(표준 출력)2>&1
bash에게 stderr과 stdout을 병합하라고 지시하세요.$(< $test1)
파일 내용 읽기${test1}
- 삭제해야 합니다
${test1}
- 우분투 15.X에서 테스트되었으며 효과적입니다.
${test1}