w bashu, jeśli wykonam kilka poleceń połączonych ze sobą w backticks, w jaki sposób mogę sprawdzić status wyjścia pierwszego polecenia?bash pipestatus w poleceniu backticked?
tj. W tym przypadku próbuję uzyskać "1". który można uzyskać poprzez PIPESTATUS [0], jeśli nie używam odwrócone, pojedyncze apostrofy, ale które nie wydają się działać, gdy chcę zapisując wynik:
## PIPESTATUS[0] works to give me the exit status of 'false':
$ false | true;
$ echo $? ${PIPESTATUS[0]} ${PIPESTATUS[1]};
0 1 0
## doesn't work:
$ a=`false | true`;
$ echo $? ${PIPESTATUS[0]} ${PIPESTATUS[1]};
0 0
Bardziej ogólnie staram się osiągnąć: uratować ostatni wiersz wyjścia jakiegoś programu do zmiennej, ale będzie w stanie powiedzieć, czy program nie powiodło się:
$ myvar=` ./someprogram | tail -1 `;
$ if [ "what do i put here" ]; then echo "program failed!"; fi
Idealnie chciałbym również, aby zrozumieć, co się dzieje, nie tylko to, co jest odpowiedzią.
Dzięki.
Dzięki, to działa. Nie wiedziałem o "pipefail". – jerry
Działa to również w sh. Dziękuję Ci. – AnkurTank