Bash - Execute two commands and get exit status 1 if first failsSimultaneously check for empty output and successful exit statusIs the exit status of a command implemented by the command or a shell process which executes the command?Why do I get different exit status for ps | grep in a script?How to get exit status of a background process?How to get exit status of a particular command in a pipeline?Get PID and return code from 1 line bash callLog the output of ssh shell and preserve the exit statusHow to get the exit code of commands started by find?Why exit status of command “ls” is difference between bash and csh shell?Exit status of chained commands

Applicants clearly not having the skills they advertise

When leasing/renting out an owned property, is there a standard ratio between monthly rent and the mortgage?

Did Darth Vader wear the same suit for 20+ years?

How can I add depth to my story or how do I determine if my story already has depth?

Is American Express widely accepted in France?

Unconventional Opposites

Asking bank to reduce APR instead of increasing credit limit

If a problem only occurs randomly once in every N times on average, how many tests do I have to perform to be certain that it's now fixed?

Is it possible to kill all life on Earth?

Concise way to draw this pyramid

Word for a small burst of laughter that can't be held back

Is the decompression of compressed and encrypted data without decryption also theoretically impossible?

NTP rollover-safe design with ESP8266 (Curiosity)

The term for the person/group a political party aligns themselves with to appear concerned about the general public

Chopin: marche funèbre bar 15 impossible place

Humans meet a distant alien species. How do they standardize? - Units of Measure

Is it OK to bring delicacies from hometown as tokens of gratitude for an out-of-town interview?

How can I determine the spell save DC of a monster/NPC?

How to decline physical affection from a child whose parents are pressuring them?

Credit card offering 0.5 miles for every cent rounded up. Too good to be true?

How should I push back against my job assigning "homework"?

Do adult Russians normally hand-write Cyrillic as cursive or as block letters?

Can you please explain this joke: "I'm going bananas is what I tell my bananas before I leave the house"?

What's the most polite way to tell a manager "shut up and let me work"?



Bash - Execute two commands and get exit status 1 if first fails


Simultaneously check for empty output and successful exit statusIs the exit status of a command implemented by the command or a shell process which executes the command?Why do I get different exit status for ps | grep in a script?How to get exit status of a background process?How to get exit status of a particular command in a pipeline?Get PID and return code from 1 line bash callLog the output of ssh shell and preserve the exit statusHow to get the exit code of commands started by find?Why exit status of command “ls” is difference between bash and csh shell?Exit status of chained commands






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








4















In the case below, the report command must always be executed but I need to get an exit status 1 if the test command fails:



test;report
echo $?
0


How can I do it in a single bash line without creating a shell script?










share|improve this question






























    4















    In the case below, the report command must always be executed but I need to get an exit status 1 if the test command fails:



    test;report
    echo $?
    0


    How can I do it in a single bash line without creating a shell script?










    share|improve this question


























      4












      4








      4








      In the case below, the report command must always be executed but I need to get an exit status 1 if the test command fails:



      test;report
      echo $?
      0


      How can I do it in a single bash line without creating a shell script?










      share|improve this question
















      In the case below, the report command must always be executed but I need to get an exit status 1 if the test command fails:



      test;report
      echo $?
      0


      How can I do it in a single bash line without creating a shell script?







      bash exit-status






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited May 17 at 20:23









      Jeff Schaller

      46k1165150




      46k1165150










      asked May 17 at 19:54









      EduardoEduardo

      1242




      1242




















          4 Answers
          4






          active

          oldest

          votes


















          14














          Save and reuse $?.



          test; ret=$?; report; exit $ret


          If you have multiple test commands and you want to run them all, but keep track of whether one has failed, you can use bash's ERR trap.



          failures=0
          trap 'failures=$((failures+1))' ERR
          test1
          test2
          if ((failures == 0)); then
          echo "Success"
          else
          echo "$failures failures"
          exit 1
          fi





          share|improve this answer






























            9














            What is a shell script except a file containing shell commands? You could pretend it's not a shell script and put it on one line with something like:



            (test; r=$?; report; [ "$r" -gt 0 ] && exit 1; exit 0)


            This exits the subshell with a 1 if the first command returned anything other than 0; otherwise, it returns 0.



            For examples -- I'm just echoing something in lieu of running a real program:



            $ (false; r=$?; echo report; [ "$r" -gt 0 ] && exit 1; exit 0)
            report
            $ echo $?
            1
            $ (true; r=$?; echo report; [ "$r" -gt 0 ] && exit 1; exit 0)
            report
            $ echo $?
            0
            $ # example with an exit-status of 2:
            $ (grep foo bar; r=$?; echo report; [ "$r" -gt 0 ] && exit 1; exit 0)
            grep: bar: No such file or directory
            report
            $ echo $?
            1


            If you regularly set the errexit shell option, you'd want to add in an override so that the subshell doesn't exit prematurely:



            (set +o errexit; false; r=$?; echo report; [ "$r" -gt 0 ] && exit 1; exit 0)





            share|improve this answer






























              4














              You said "exit status 1 if the test command fails". Assuming you intended to make that distinction (i.e., you want the exit value to be 1 even if the test command exits with, say, 2, or 3, or whatever), then this is a decent solution:



              test && report; true; || report; false; 


              If you did not really mean "1", but whatever non-zero that test exited with would be OK as your overall exit code, then the current top answer (save and reuse $?) works fine.






              share|improve this answer






























                0














                A really bad idea, but this seems to work, for some inspiration:



                (trap report exit; test)





                share|improve this answer























                  Your Answer








                  StackExchange.ready(function()
                  var channelOptions =
                  tags: "".split(" "),
                  id: "106"
                  ;
                  initTagRenderer("".split(" "), "".split(" "), channelOptions);

                  StackExchange.using("externalEditor", function()
                  // Have to fire editor after snippets, if snippets enabled
                  if (StackExchange.settings.snippets.snippetsEnabled)
                  StackExchange.using("snippets", function()
                  createEditor();
                  );

                  else
                  createEditor();

                  );

                  function createEditor()
                  StackExchange.prepareEditor(
                  heartbeatType: 'answer',
                  autoActivateHeartbeat: false,
                  convertImagesToLinks: false,
                  noModals: true,
                  showLowRepImageUploadWarning: true,
                  reputationToPostImages: null,
                  bindNavPrevention: true,
                  postfix: "",
                  imageUploader:
                  brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
                  contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
                  allowUrls: true
                  ,
                  onDemand: true,
                  discardSelector: ".discard-answer"
                  ,immediatelyShowMarkdownHelp:true
                  );



                  );













                  draft saved

                  draft discarded


















                  StackExchange.ready(
                  function ()
                  StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f519567%2fbash-execute-two-commands-and-get-exit-status-1-if-first-fails%23new-answer', 'question_page');

                  );

                  Post as a guest















                  Required, but never shown

























                  4 Answers
                  4






                  active

                  oldest

                  votes








                  4 Answers
                  4






                  active

                  oldest

                  votes









                  active

                  oldest

                  votes






                  active

                  oldest

                  votes









                  14














                  Save and reuse $?.



                  test; ret=$?; report; exit $ret


                  If you have multiple test commands and you want to run them all, but keep track of whether one has failed, you can use bash's ERR trap.



                  failures=0
                  trap 'failures=$((failures+1))' ERR
                  test1
                  test2
                  if ((failures == 0)); then
                  echo "Success"
                  else
                  echo "$failures failures"
                  exit 1
                  fi





                  share|improve this answer



























                    14














                    Save and reuse $?.



                    test; ret=$?; report; exit $ret


                    If you have multiple test commands and you want to run them all, but keep track of whether one has failed, you can use bash's ERR trap.



                    failures=0
                    trap 'failures=$((failures+1))' ERR
                    test1
                    test2
                    if ((failures == 0)); then
                    echo "Success"
                    else
                    echo "$failures failures"
                    exit 1
                    fi





                    share|improve this answer

























                      14












                      14








                      14







                      Save and reuse $?.



                      test; ret=$?; report; exit $ret


                      If you have multiple test commands and you want to run them all, but keep track of whether one has failed, you can use bash's ERR trap.



                      failures=0
                      trap 'failures=$((failures+1))' ERR
                      test1
                      test2
                      if ((failures == 0)); then
                      echo "Success"
                      else
                      echo "$failures failures"
                      exit 1
                      fi





                      share|improve this answer













                      Save and reuse $?.



                      test; ret=$?; report; exit $ret


                      If you have multiple test commands and you want to run them all, but keep track of whether one has failed, you can use bash's ERR trap.



                      failures=0
                      trap 'failures=$((failures+1))' ERR
                      test1
                      test2
                      if ((failures == 0)); then
                      echo "Success"
                      else
                      echo "$failures failures"
                      exit 1
                      fi






                      share|improve this answer












                      share|improve this answer



                      share|improve this answer










                      answered May 17 at 20:17









                      GillesGilles

                      556k13411421651




                      556k13411421651























                          9














                          What is a shell script except a file containing shell commands? You could pretend it's not a shell script and put it on one line with something like:



                          (test; r=$?; report; [ "$r" -gt 0 ] && exit 1; exit 0)


                          This exits the subshell with a 1 if the first command returned anything other than 0; otherwise, it returns 0.



                          For examples -- I'm just echoing something in lieu of running a real program:



                          $ (false; r=$?; echo report; [ "$r" -gt 0 ] && exit 1; exit 0)
                          report
                          $ echo $?
                          1
                          $ (true; r=$?; echo report; [ "$r" -gt 0 ] && exit 1; exit 0)
                          report
                          $ echo $?
                          0
                          $ # example with an exit-status of 2:
                          $ (grep foo bar; r=$?; echo report; [ "$r" -gt 0 ] && exit 1; exit 0)
                          grep: bar: No such file or directory
                          report
                          $ echo $?
                          1


                          If you regularly set the errexit shell option, you'd want to add in an override so that the subshell doesn't exit prematurely:



                          (set +o errexit; false; r=$?; echo report; [ "$r" -gt 0 ] && exit 1; exit 0)





                          share|improve this answer



























                            9














                            What is a shell script except a file containing shell commands? You could pretend it's not a shell script and put it on one line with something like:



                            (test; r=$?; report; [ "$r" -gt 0 ] && exit 1; exit 0)


                            This exits the subshell with a 1 if the first command returned anything other than 0; otherwise, it returns 0.



                            For examples -- I'm just echoing something in lieu of running a real program:



                            $ (false; r=$?; echo report; [ "$r" -gt 0 ] && exit 1; exit 0)
                            report
                            $ echo $?
                            1
                            $ (true; r=$?; echo report; [ "$r" -gt 0 ] && exit 1; exit 0)
                            report
                            $ echo $?
                            0
                            $ # example with an exit-status of 2:
                            $ (grep foo bar; r=$?; echo report; [ "$r" -gt 0 ] && exit 1; exit 0)
                            grep: bar: No such file or directory
                            report
                            $ echo $?
                            1


                            If you regularly set the errexit shell option, you'd want to add in an override so that the subshell doesn't exit prematurely:



                            (set +o errexit; false; r=$?; echo report; [ "$r" -gt 0 ] && exit 1; exit 0)





                            share|improve this answer

























                              9












                              9








                              9







                              What is a shell script except a file containing shell commands? You could pretend it's not a shell script and put it on one line with something like:



                              (test; r=$?; report; [ "$r" -gt 0 ] && exit 1; exit 0)


                              This exits the subshell with a 1 if the first command returned anything other than 0; otherwise, it returns 0.



                              For examples -- I'm just echoing something in lieu of running a real program:



                              $ (false; r=$?; echo report; [ "$r" -gt 0 ] && exit 1; exit 0)
                              report
                              $ echo $?
                              1
                              $ (true; r=$?; echo report; [ "$r" -gt 0 ] && exit 1; exit 0)
                              report
                              $ echo $?
                              0
                              $ # example with an exit-status of 2:
                              $ (grep foo bar; r=$?; echo report; [ "$r" -gt 0 ] && exit 1; exit 0)
                              grep: bar: No such file or directory
                              report
                              $ echo $?
                              1


                              If you regularly set the errexit shell option, you'd want to add in an override so that the subshell doesn't exit prematurely:



                              (set +o errexit; false; r=$?; echo report; [ "$r" -gt 0 ] && exit 1; exit 0)





                              share|improve this answer













                              What is a shell script except a file containing shell commands? You could pretend it's not a shell script and put it on one line with something like:



                              (test; r=$?; report; [ "$r" -gt 0 ] && exit 1; exit 0)


                              This exits the subshell with a 1 if the first command returned anything other than 0; otherwise, it returns 0.



                              For examples -- I'm just echoing something in lieu of running a real program:



                              $ (false; r=$?; echo report; [ "$r" -gt 0 ] && exit 1; exit 0)
                              report
                              $ echo $?
                              1
                              $ (true; r=$?; echo report; [ "$r" -gt 0 ] && exit 1; exit 0)
                              report
                              $ echo $?
                              0
                              $ # example with an exit-status of 2:
                              $ (grep foo bar; r=$?; echo report; [ "$r" -gt 0 ] && exit 1; exit 0)
                              grep: bar: No such file or directory
                              report
                              $ echo $?
                              1


                              If you regularly set the errexit shell option, you'd want to add in an override so that the subshell doesn't exit prematurely:



                              (set +o errexit; false; r=$?; echo report; [ "$r" -gt 0 ] && exit 1; exit 0)






                              share|improve this answer












                              share|improve this answer



                              share|improve this answer










                              answered May 17 at 20:16









                              Jeff SchallerJeff Schaller

                              46k1165150




                              46k1165150





















                                  4














                                  You said "exit status 1 if the test command fails". Assuming you intended to make that distinction (i.e., you want the exit value to be 1 even if the test command exits with, say, 2, or 3, or whatever), then this is a decent solution:



                                  test && report; true; || report; false; 


                                  If you did not really mean "1", but whatever non-zero that test exited with would be OK as your overall exit code, then the current top answer (save and reuse $?) works fine.






                                  share|improve this answer



























                                    4














                                    You said "exit status 1 if the test command fails". Assuming you intended to make that distinction (i.e., you want the exit value to be 1 even if the test command exits with, say, 2, or 3, or whatever), then this is a decent solution:



                                    test && report; true; || report; false; 


                                    If you did not really mean "1", but whatever non-zero that test exited with would be OK as your overall exit code, then the current top answer (save and reuse $?) works fine.






                                    share|improve this answer

























                                      4












                                      4








                                      4







                                      You said "exit status 1 if the test command fails". Assuming you intended to make that distinction (i.e., you want the exit value to be 1 even if the test command exits with, say, 2, or 3, or whatever), then this is a decent solution:



                                      test && report; true; || report; false; 


                                      If you did not really mean "1", but whatever non-zero that test exited with would be OK as your overall exit code, then the current top answer (save and reuse $?) works fine.






                                      share|improve this answer













                                      You said "exit status 1 if the test command fails". Assuming you intended to make that distinction (i.e., you want the exit value to be 1 even if the test command exits with, say, 2, or 3, or whatever), then this is a decent solution:



                                      test && report; true; || report; false; 


                                      If you did not really mean "1", but whatever non-zero that test exited with would be OK as your overall exit code, then the current top answer (save and reuse $?) works fine.







                                      share|improve this answer












                                      share|improve this answer



                                      share|improve this answer










                                      answered May 18 at 5:55









                                      sitaramsitaram

                                      613




                                      613





















                                          0














                                          A really bad idea, but this seems to work, for some inspiration:



                                          (trap report exit; test)





                                          share|improve this answer



























                                            0














                                            A really bad idea, but this seems to work, for some inspiration:



                                            (trap report exit; test)





                                            share|improve this answer

























                                              0












                                              0








                                              0







                                              A really bad idea, but this seems to work, for some inspiration:



                                              (trap report exit; test)





                                              share|improve this answer













                                              A really bad idea, but this seems to work, for some inspiration:



                                              (trap report exit; test)






                                              share|improve this answer












                                              share|improve this answer



                                              share|improve this answer










                                              answered May 18 at 17:30









                                              user23013user23013

                                              642414




                                              642414



























                                                  draft saved

                                                  draft discarded
















































                                                  Thanks for contributing an answer to Unix & Linux Stack Exchange!


                                                  • Please be sure to answer the question. Provide details and share your research!

                                                  But avoid


                                                  • Asking for help, clarification, or responding to other answers.

                                                  • Making statements based on opinion; back them up with references or personal experience.

                                                  To learn more, see our tips on writing great answers.




                                                  draft saved


                                                  draft discarded














                                                  StackExchange.ready(
                                                  function ()
                                                  StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f519567%2fbash-execute-two-commands-and-get-exit-status-1-if-first-fails%23new-answer', 'question_page');

                                                  );

                                                  Post as a guest















                                                  Required, but never shown





















































                                                  Required, but never shown














                                                  Required, but never shown












                                                  Required, but never shown







                                                  Required, but never shown

































                                                  Required, but never shown














                                                  Required, but never shown












                                                  Required, but never shown







                                                  Required, but never shown







                                                  Popular posts from this blog

                                                  Club Baloncesto Breogán Índice Historia | Pavillón | Nome | O Breogán na cultura popular | Xogadores | Adestradores | Presidentes | Palmarés | Historial | Líderes | Notas | Véxase tamén | Menú de navegacióncbbreogan.galCadroGuía oficial da ACB 2009-10, páxina 201Guía oficial ACB 1992, páxina 183. Editorial DB.É de 6.500 espectadores sentados axeitándose á última normativa"Estudiantes Junior, entre as mellores canteiras"o orixinalHemeroteca El Mundo Deportivo, 16 setembro de 1970, páxina 12Historia do BreogánAlfredo Pérez, o último canoneiroHistoria C.B. BreogánHemeroteca de El Mundo DeportivoJimmy Wright, norteamericano do Breogán deixará Lugo por ameazas de morteResultados de Breogán en 1986-87Resultados de Breogán en 1990-91Ficha de Velimir Perasović en acb.comResultados de Breogán en 1994-95Breogán arrasa al Barça. "El Mundo Deportivo", 27 de setembro de 1999, páxina 58CB Breogán - FC BarcelonaA FEB invita a participar nunha nova Liga EuropeaCharlie Bell na prensa estatalMáximos anotadores 2005Tempada 2005-06 : Tódolos Xogadores da Xornada""Non quero pensar nunha man negra, mais pregúntome que está a pasar""o orixinalRaúl López, orgulloso dos xogadores, presume da boa saúde económica do BreogánJulio González confirma que cesa como presidente del BreogánHomenaxe a Lisardo GómezA tempada do rexurdimento celesteEntrevista a Lisardo GómezEl COB dinamita el Pazo para forzar el quinto (69-73)Cafés Candelas, patrocinador del CB Breogán"Suso Lázare, novo presidente do Breogán"o orixinalCafés Candelas Breogán firma el mayor triunfo de la historiaEl Breogán realizará 17 homenajes por su cincuenta aniversario"O Breogán honra ao seu fundador e primeiro presidente"o orixinalMiguel Giao recibiu a homenaxe do PazoHomenaxe aos primeiros gladiadores celestesO home que nos amosa como ver o Breo co corazónTita Franco será homenaxeada polos #50anosdeBreoJulio Vila recibirá unha homenaxe in memoriam polos #50anosdeBreo"O Breogán homenaxeará aos seus aboados máis veteráns"Pechada ovación a «Capi» Sanmartín e Ricardo «Corazón de González»Homenaxe por décadas de informaciónPaco García volve ao Pazo con motivo do 50 aniversario"Resultados y clasificaciones""O Cafés Candelas Breogán, campión da Copa Princesa""O Cafés Candelas Breogán, equipo ACB"C.B. Breogán"Proxecto social"o orixinal"Centros asociados"o orixinalFicha en imdb.comMario Camus trata la recuperación del amor en 'La vieja música', su última película"Páxina web oficial""Club Baloncesto Breogán""C. B. Breogán S.A.D."eehttp://www.fegaba.com

                                                  Vilaño, A Laracha Índice Patrimonio | Lugares e parroquias | Véxase tamén | Menú de navegación43°14′52″N 8°36′03″O / 43.24775, -8.60070

                                                  Cegueira Índice Epidemioloxía | Deficiencia visual | Tipos de cegueira | Principais causas de cegueira | Tratamento | Técnicas de adaptación e axudas | Vida dos cegos | Primeiros auxilios | Crenzas respecto das persoas cegas | Crenzas das persoas cegas | O neno deficiente visual | Aspectos psicolóxicos da cegueira | Notas | Véxase tamén | Menú de navegación54.054.154.436928256blindnessDicionario da Real Academia GalegaPortal das Palabras"International Standards: Visual Standards — Aspects and Ranges of Vision Loss with Emphasis on Population Surveys.""Visual impairment and blindness""Presentan un plan para previr a cegueira"o orixinalACCDV Associació Catalana de Cecs i Disminuïts Visuals - PMFTrachoma"Effect of gene therapy on visual function in Leber's congenital amaurosis"1844137110.1056/NEJMoa0802268Cans guía - os mellores amigos dos cegosArquivadoEscola de cans guía para cegos en Mortágua, PortugalArquivado"Tecnología para ciegos y deficientes visuales. Recopilación de recursos gratuitos en la Red""Colorino""‘COL.diesis’, escuchar los sonidos del color""COL.diesis: Transforming Colour into Melody and Implementing the Result in a Colour Sensor Device"o orixinal"Sistema de desarrollo de sinestesia color-sonido para invidentes utilizando un protocolo de audio""Enseñanza táctil - geometría y color. Juegos didácticos para niños ciegos y videntes""Sistema Constanz"L'ocupació laboral dels cecs a l'Estat espanyol està pràcticament equiparada a la de les persones amb visió, entrevista amb Pedro ZuritaONCE (Organización Nacional de Cegos de España)Prevención da cegueiraDescrición de deficiencias visuais (Disc@pnet)Braillín, un boneco atractivo para calquera neno, con ou sen discapacidade, que permite familiarizarse co sistema de escritura e lectura brailleAxudas Técnicas36838ID00897494007150-90057129528256DOID:1432HP:0000618D001766C10.597.751.941.162C97109C0155020