Logga output och spara exit code för samma kommando

Trädvy Permalänk
Medlem
Plats
Luleå
Registrerad
Jan 2004

Logga output och spara exit code för samma kommando

Jag försöker logga output från min backup med borg, samtidigt som jag vill spara exit coden i en variabel, det här var krångligare än vad jag väntade mig. Backupen körs via ett bash-script och den relevanta delen ser ut såhär:

LOG="/volume1/scripts/borg/borg.log"
borg create [massa options här] 2>&1 | tee -a $LOG; backup_exit=${PIPESTATUS[0]}

Ovanstående är det närmsta jag hittat via google, tanken är att man kör borg create (skapa en ny backup), 2>&1 riktar över stderr till stdout, tee -a ska logga till loggfilen och samtidigt behålla output i terminal, och sen ska backup_exit få exit coden från PIPESTATUS[0]. Problemet är att PIPESTATUS[0] aldrig blir annat än 0, även om jag följer scriptet i terminalen och ser att borg create faktiskt avslutar med ett error (t.ex. för att backupen redan finns för det aktuella datumet).

Vad kan jag ändra för att få till det här? Det går inte att använda backup_exit=$? för att $? tar exit code från tee-kommandot då.