if条件内の変数にstderrをリダイレクトする方法は?吹く

if条件内の変数にstderrをリダイレクトする方法は?吹く

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;

しかし、このソリューションは2つの点で私には適していません。早く作っtest1た時test1=0なのかな。

Ubuntu 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

おすすめ記事