Which is the best way to check return result?When is double-quoting necessary?Input validation in a bash scriptScript that asks for four words, then tells the user the word they chose. Output error?Get specific result from functionbash script to extract string from last output lineif statement with grepHow to check a set of lines in a text file for patterns using awk, sed, or grep?Check whether any value is zero using jq and return 0 to the calling shell scriptBash assign variable result of bool function, then checkshell script if output equal any ip addressbash: Boolean math and unary '!'

ssTTsSTtRrriinInnnnNNNIiinngg

What is the idiomatic way to say "clothing fits"?

How to show a landlord what we have in savings?

Can compressed videos be decoded back to their uncompresed original format?

Assassin's bullet with mercury

Why is it a bad idea to hire a hitman to eliminate most corrupt politicians?

Does the Idaho Potato Commission associate potato skins with healthy eating?

What are some good books on Machine Learning and AI like Krugman, Wells and Graddy's "Essentials of Economics"

How to add frame around section using titlesec?

Extract rows of a table, that include less than x NULLs

Is it possible to create a QR code using text?

Why didn't Boeing produce its own regional jet?

Venezuelan girlfriend wants to travel the USA to be with me. What is the process?

What killed these X2 caps?

What about the virus in 12 Monkeys?

What does “the session was packed” mean in this context?

Detention in 1997

How to compactly explain secondary and tertiary characters without resorting to stereotypes?

Examples of smooth manifolds admitting inbetween one and a continuum of complex structures

pgfplots: How to draw exponential graph with 60° start angle?

Is it logically or scientifically possible to artificially send energy to the body?

Short story with a alien planet, government officials must wear exploding medallions

Would Slavery Reparations be considered Bills of Attainder and hence Illegal?

Is "remove commented out code" correct English?



Which is the best way to check return result?


When is double-quoting necessary?Input validation in a bash scriptScript that asks for four words, then tells the user the word they chose. Output error?Get specific result from functionbash script to extract string from last output lineif statement with grepHow to check a set of lines in a text file for patterns using awk, sed, or grep?Check whether any value is zero using jq and return 0 to the calling shell scriptBash assign variable result of bool function, then checkshell script if output equal any ip addressbash: Boolean math and unary '!'













4















I've set a function in a shell script that checks if a folder exists, if it does not exist, tries to created it, and if it can not create the folder (for example if the user does not the right permission) return 1.
Then I check this "return", but I don't understand why "if" does not work because the return equal 1.



Code:



#!/bin/bash
# Main folders
INPUT="input"
OUTPUT="output"

# Functions

function checkFolderExist()
if [ -d $1 ]
then
# 0 = true
# Change to 0, only for tests.
return 1
else
mkdir $1
result=$?
if [ result==0 ]
then
# 0 = true
return 0
else
# 1 = false
return 1
fi
fi



CHECKINPUT=$(checkFolderExist $INPUT)
echo $?
CHECKOUTPUT=$(checkFolderExist $OUTPUT)
echo $?

# If folders does not exist, exit the script
if [[ "$CHECKINPUT" = 1 || "$CHECKOUTPUT" = 1 ]]; then
echo "[+] Error. Folder does not exist. Check user permissions."
exit 1
fi









share|improve this question




























    4















    I've set a function in a shell script that checks if a folder exists, if it does not exist, tries to created it, and if it can not create the folder (for example if the user does not the right permission) return 1.
    Then I check this "return", but I don't understand why "if" does not work because the return equal 1.



    Code:



    #!/bin/bash
    # Main folders
    INPUT="input"
    OUTPUT="output"

    # Functions

    function checkFolderExist()
    if [ -d $1 ]
    then
    # 0 = true
    # Change to 0, only for tests.
    return 1
    else
    mkdir $1
    result=$?
    if [ result==0 ]
    then
    # 0 = true
    return 0
    else
    # 1 = false
    return 1
    fi
    fi



    CHECKINPUT=$(checkFolderExist $INPUT)
    echo $?
    CHECKOUTPUT=$(checkFolderExist $OUTPUT)
    echo $?

    # If folders does not exist, exit the script
    if [[ "$CHECKINPUT" = 1 || "$CHECKOUTPUT" = 1 ]]; then
    echo "[+] Error. Folder does not exist. Check user permissions."
    exit 1
    fi









    share|improve this question


























      4












      4








      4








      I've set a function in a shell script that checks if a folder exists, if it does not exist, tries to created it, and if it can not create the folder (for example if the user does not the right permission) return 1.
      Then I check this "return", but I don't understand why "if" does not work because the return equal 1.



      Code:



      #!/bin/bash
      # Main folders
      INPUT="input"
      OUTPUT="output"

      # Functions

      function checkFolderExist()
      if [ -d $1 ]
      then
      # 0 = true
      # Change to 0, only for tests.
      return 1
      else
      mkdir $1
      result=$?
      if [ result==0 ]
      then
      # 0 = true
      return 0
      else
      # 1 = false
      return 1
      fi
      fi



      CHECKINPUT=$(checkFolderExist $INPUT)
      echo $?
      CHECKOUTPUT=$(checkFolderExist $OUTPUT)
      echo $?

      # If folders does not exist, exit the script
      if [[ "$CHECKINPUT" = 1 || "$CHECKOUTPUT" = 1 ]]; then
      echo "[+] Error. Folder does not exist. Check user permissions."
      exit 1
      fi









      share|improve this question
















      I've set a function in a shell script that checks if a folder exists, if it does not exist, tries to created it, and if it can not create the folder (for example if the user does not the right permission) return 1.
      Then I check this "return", but I don't understand why "if" does not work because the return equal 1.



      Code:



      #!/bin/bash
      # Main folders
      INPUT="input"
      OUTPUT="output"

      # Functions

      function checkFolderExist()
      if [ -d $1 ]
      then
      # 0 = true
      # Change to 0, only for tests.
      return 1
      else
      mkdir $1
      result=$?
      if [ result==0 ]
      then
      # 0 = true
      return 0
      else
      # 1 = false
      return 1
      fi
      fi



      CHECKINPUT=$(checkFolderExist $INPUT)
      echo $?
      CHECKOUTPUT=$(checkFolderExist $OUTPUT)
      echo $?

      # If folders does not exist, exit the script
      if [[ "$CHECKINPUT" = 1 || "$CHECKOUTPUT" = 1 ]]; then
      echo "[+] Error. Folder does not exist. Check user permissions."
      exit 1
      fi






      bash shell-script






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited 9 hours ago









      Rui F Ribeiro

      41.9k1483142




      41.9k1483142










      asked 9 hours ago









      jaskjask

      414




      414




















          3 Answers
          3






          active

          oldest

          votes


















          9














          There's a few things here.



          • You very seldom have to explicitly check $? against anything or save it in a variable (unless you need to reference the same exit status multiple times).

          • The exit status of a function is the exit status of the last executed command in the function, so an explicit return is seldom needed (seldom with an explicit return value at least).

          • A function that checks whether a directory exists should not create any directories. Better call it create_dir_if_needed.

          • There's an error in [ result==0 ]. The string result==0 is a string of non-zero length, and testing a string in this way will return true if the string has non-zero length, so the test is always true. You probably wanted [ "$result" -eq 0 ] instead.

          • Remember to always double quote variable expansions and command substitutions, unless you know in what contexts this is not needed.

          With these things in mind:



          create_dir_if_needed () 
          mkdir -p -- "$1"



          This would return the exit status of mkdir -p -- "$1". This command would create the named directory (and any intermediate directories) if this did not already exist. If the mkdir command fails to create the directory, it will exit with a non-zero exit status, which will become the exit status of the function. mkdir -p will not fail if the directory already exists.



          You would use this as



          if ! create_dir_if_needed "$dirpath"; then
          printf 'Failed to create directory "%s"n' "$dirpath" >&2
          exit 1
          fi


          or, since the function is trivial, you could get rid of it and say



          if ! mkdir -p -- "$dirpath"; then
          printf 'Failed to create directory "%s"n' "$dirpath" >&2
          exit 1
          fi



          A variation of the create_dir_if_needed function that uses mkdir without -p and will therefore never create missing parent directories to the given directory path:



          create_dir_if_needed () 
          if [ -d "$1" ]; then
          return
          fi

          mkdir -- "$1"



          or,



          create_dir_if_needed () 
          [ -d "$1" ]


          A call to this function would return true (zero) if the directory already existed or if the mkdir call went well. A return statement with no explicit value will return the exit status of the most recently executed statement, in this case it would return the positive outcome of the [ -d "$1" ] test.






          share|improve this answer
































            1














            Bash does not work like regular programming languages when it comes to returning values.



            Here you are confusing output from checkFolderExist with return status from checkFolderExist.



            Your CHECKINPUT and CHECKOUTPUT variables will be empty because your function does not echo nor printf anything.



            Should you really want to save your function’s return status for later use you should rather do:



            checkFolderExist "$INPUT"
            CHECKINPUT=$?

            checkFolderExist "$OUTPUT"
            CHECKOUTPUT=$?


            Besides this, I’d anyway recommend you to follow the advices in Kusalananda’s answer that direct you to better techniques to address the problem.






            share|improve this answer






























              1














              You are mixing up output versus return value of a function. I show you minimal working examples, so you can see your mistake:



              Either do a return:



              myfunc() 
              return 1


              myfunc
              ret=$?
              [ $ret -eq 0 ] && echo OK


              or write to stdout and check the output:



              myfunc() 
              echo '1'


              ret="$(myfunc)"
              [ "$ret" = '0' ] && echo OK


              Also note that I prefer distinguishing integer from string of the variable ret, which is not really necessary if you know that the output can only be numeric but makes it cleaner. Furtheron, capturing the return value into a variable is not necessary if the conditional statement follows immediately.



              It is the first one you wanted to have, so you must not use $(). You really mixed them: Return value as in the first example, and checking output as in the second example.






              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%2f510269%2fwhich-is-the-best-way-to-check-return-result%23new-answer', 'question_page');

                );

                Post as a guest















                Required, but never shown

























                3 Answers
                3






                active

                oldest

                votes








                3 Answers
                3






                active

                oldest

                votes









                active

                oldest

                votes






                active

                oldest

                votes









                9














                There's a few things here.



                • You very seldom have to explicitly check $? against anything or save it in a variable (unless you need to reference the same exit status multiple times).

                • The exit status of a function is the exit status of the last executed command in the function, so an explicit return is seldom needed (seldom with an explicit return value at least).

                • A function that checks whether a directory exists should not create any directories. Better call it create_dir_if_needed.

                • There's an error in [ result==0 ]. The string result==0 is a string of non-zero length, and testing a string in this way will return true if the string has non-zero length, so the test is always true. You probably wanted [ "$result" -eq 0 ] instead.

                • Remember to always double quote variable expansions and command substitutions, unless you know in what contexts this is not needed.

                With these things in mind:



                create_dir_if_needed () 
                mkdir -p -- "$1"



                This would return the exit status of mkdir -p -- "$1". This command would create the named directory (and any intermediate directories) if this did not already exist. If the mkdir command fails to create the directory, it will exit with a non-zero exit status, which will become the exit status of the function. mkdir -p will not fail if the directory already exists.



                You would use this as



                if ! create_dir_if_needed "$dirpath"; then
                printf 'Failed to create directory "%s"n' "$dirpath" >&2
                exit 1
                fi


                or, since the function is trivial, you could get rid of it and say



                if ! mkdir -p -- "$dirpath"; then
                printf 'Failed to create directory "%s"n' "$dirpath" >&2
                exit 1
                fi



                A variation of the create_dir_if_needed function that uses mkdir without -p and will therefore never create missing parent directories to the given directory path:



                create_dir_if_needed () 
                if [ -d "$1" ]; then
                return
                fi

                mkdir -- "$1"



                or,



                create_dir_if_needed () 
                [ -d "$1" ]


                A call to this function would return true (zero) if the directory already existed or if the mkdir call went well. A return statement with no explicit value will return the exit status of the most recently executed statement, in this case it would return the positive outcome of the [ -d "$1" ] test.






                share|improve this answer





























                  9














                  There's a few things here.



                  • You very seldom have to explicitly check $? against anything or save it in a variable (unless you need to reference the same exit status multiple times).

                  • The exit status of a function is the exit status of the last executed command in the function, so an explicit return is seldom needed (seldom with an explicit return value at least).

                  • A function that checks whether a directory exists should not create any directories. Better call it create_dir_if_needed.

                  • There's an error in [ result==0 ]. The string result==0 is a string of non-zero length, and testing a string in this way will return true if the string has non-zero length, so the test is always true. You probably wanted [ "$result" -eq 0 ] instead.

                  • Remember to always double quote variable expansions and command substitutions, unless you know in what contexts this is not needed.

                  With these things in mind:



                  create_dir_if_needed () 
                  mkdir -p -- "$1"



                  This would return the exit status of mkdir -p -- "$1". This command would create the named directory (and any intermediate directories) if this did not already exist. If the mkdir command fails to create the directory, it will exit with a non-zero exit status, which will become the exit status of the function. mkdir -p will not fail if the directory already exists.



                  You would use this as



                  if ! create_dir_if_needed "$dirpath"; then
                  printf 'Failed to create directory "%s"n' "$dirpath" >&2
                  exit 1
                  fi


                  or, since the function is trivial, you could get rid of it and say



                  if ! mkdir -p -- "$dirpath"; then
                  printf 'Failed to create directory "%s"n' "$dirpath" >&2
                  exit 1
                  fi



                  A variation of the create_dir_if_needed function that uses mkdir without -p and will therefore never create missing parent directories to the given directory path:



                  create_dir_if_needed () 
                  if [ -d "$1" ]; then
                  return
                  fi

                  mkdir -- "$1"



                  or,



                  create_dir_if_needed () 
                  [ -d "$1" ]


                  A call to this function would return true (zero) if the directory already existed or if the mkdir call went well. A return statement with no explicit value will return the exit status of the most recently executed statement, in this case it would return the positive outcome of the [ -d "$1" ] test.






                  share|improve this answer



























                    9












                    9








                    9







                    There's a few things here.



                    • You very seldom have to explicitly check $? against anything or save it in a variable (unless you need to reference the same exit status multiple times).

                    • The exit status of a function is the exit status of the last executed command in the function, so an explicit return is seldom needed (seldom with an explicit return value at least).

                    • A function that checks whether a directory exists should not create any directories. Better call it create_dir_if_needed.

                    • There's an error in [ result==0 ]. The string result==0 is a string of non-zero length, and testing a string in this way will return true if the string has non-zero length, so the test is always true. You probably wanted [ "$result" -eq 0 ] instead.

                    • Remember to always double quote variable expansions and command substitutions, unless you know in what contexts this is not needed.

                    With these things in mind:



                    create_dir_if_needed () 
                    mkdir -p -- "$1"



                    This would return the exit status of mkdir -p -- "$1". This command would create the named directory (and any intermediate directories) if this did not already exist. If the mkdir command fails to create the directory, it will exit with a non-zero exit status, which will become the exit status of the function. mkdir -p will not fail if the directory already exists.



                    You would use this as



                    if ! create_dir_if_needed "$dirpath"; then
                    printf 'Failed to create directory "%s"n' "$dirpath" >&2
                    exit 1
                    fi


                    or, since the function is trivial, you could get rid of it and say



                    if ! mkdir -p -- "$dirpath"; then
                    printf 'Failed to create directory "%s"n' "$dirpath" >&2
                    exit 1
                    fi



                    A variation of the create_dir_if_needed function that uses mkdir without -p and will therefore never create missing parent directories to the given directory path:



                    create_dir_if_needed () 
                    if [ -d "$1" ]; then
                    return
                    fi

                    mkdir -- "$1"



                    or,



                    create_dir_if_needed () 
                    [ -d "$1" ]


                    A call to this function would return true (zero) if the directory already existed or if the mkdir call went well. A return statement with no explicit value will return the exit status of the most recently executed statement, in this case it would return the positive outcome of the [ -d "$1" ] test.






                    share|improve this answer















                    There's a few things here.



                    • You very seldom have to explicitly check $? against anything or save it in a variable (unless you need to reference the same exit status multiple times).

                    • The exit status of a function is the exit status of the last executed command in the function, so an explicit return is seldom needed (seldom with an explicit return value at least).

                    • A function that checks whether a directory exists should not create any directories. Better call it create_dir_if_needed.

                    • There's an error in [ result==0 ]. The string result==0 is a string of non-zero length, and testing a string in this way will return true if the string has non-zero length, so the test is always true. You probably wanted [ "$result" -eq 0 ] instead.

                    • Remember to always double quote variable expansions and command substitutions, unless you know in what contexts this is not needed.

                    With these things in mind:



                    create_dir_if_needed () 
                    mkdir -p -- "$1"



                    This would return the exit status of mkdir -p -- "$1". This command would create the named directory (and any intermediate directories) if this did not already exist. If the mkdir command fails to create the directory, it will exit with a non-zero exit status, which will become the exit status of the function. mkdir -p will not fail if the directory already exists.



                    You would use this as



                    if ! create_dir_if_needed "$dirpath"; then
                    printf 'Failed to create directory "%s"n' "$dirpath" >&2
                    exit 1
                    fi


                    or, since the function is trivial, you could get rid of it and say



                    if ! mkdir -p -- "$dirpath"; then
                    printf 'Failed to create directory "%s"n' "$dirpath" >&2
                    exit 1
                    fi



                    A variation of the create_dir_if_needed function that uses mkdir without -p and will therefore never create missing parent directories to the given directory path:



                    create_dir_if_needed () 
                    if [ -d "$1" ]; then
                    return
                    fi

                    mkdir -- "$1"



                    or,



                    create_dir_if_needed () 
                    [ -d "$1" ]


                    A call to this function would return true (zero) if the directory already existed or if the mkdir call went well. A return statement with no explicit value will return the exit status of the most recently executed statement, in this case it would return the positive outcome of the [ -d "$1" ] test.







                    share|improve this answer














                    share|improve this answer



                    share|improve this answer








                    edited 8 hours ago









                    Stéphane Chazelas

                    312k57592948




                    312k57592948










                    answered 9 hours ago









                    KusalanandaKusalananda

                    139k17259431




                    139k17259431























                        1














                        Bash does not work like regular programming languages when it comes to returning values.



                        Here you are confusing output from checkFolderExist with return status from checkFolderExist.



                        Your CHECKINPUT and CHECKOUTPUT variables will be empty because your function does not echo nor printf anything.



                        Should you really want to save your function’s return status for later use you should rather do:



                        checkFolderExist "$INPUT"
                        CHECKINPUT=$?

                        checkFolderExist "$OUTPUT"
                        CHECKOUTPUT=$?


                        Besides this, I’d anyway recommend you to follow the advices in Kusalananda’s answer that direct you to better techniques to address the problem.






                        share|improve this answer



























                          1














                          Bash does not work like regular programming languages when it comes to returning values.



                          Here you are confusing output from checkFolderExist with return status from checkFolderExist.



                          Your CHECKINPUT and CHECKOUTPUT variables will be empty because your function does not echo nor printf anything.



                          Should you really want to save your function’s return status for later use you should rather do:



                          checkFolderExist "$INPUT"
                          CHECKINPUT=$?

                          checkFolderExist "$OUTPUT"
                          CHECKOUTPUT=$?


                          Besides this, I’d anyway recommend you to follow the advices in Kusalananda’s answer that direct you to better techniques to address the problem.






                          share|improve this answer

























                            1












                            1








                            1







                            Bash does not work like regular programming languages when it comes to returning values.



                            Here you are confusing output from checkFolderExist with return status from checkFolderExist.



                            Your CHECKINPUT and CHECKOUTPUT variables will be empty because your function does not echo nor printf anything.



                            Should you really want to save your function’s return status for later use you should rather do:



                            checkFolderExist "$INPUT"
                            CHECKINPUT=$?

                            checkFolderExist "$OUTPUT"
                            CHECKOUTPUT=$?


                            Besides this, I’d anyway recommend you to follow the advices in Kusalananda’s answer that direct you to better techniques to address the problem.






                            share|improve this answer













                            Bash does not work like regular programming languages when it comes to returning values.



                            Here you are confusing output from checkFolderExist with return status from checkFolderExist.



                            Your CHECKINPUT and CHECKOUTPUT variables will be empty because your function does not echo nor printf anything.



                            Should you really want to save your function’s return status for later use you should rather do:



                            checkFolderExist "$INPUT"
                            CHECKINPUT=$?

                            checkFolderExist "$OUTPUT"
                            CHECKOUTPUT=$?


                            Besides this, I’d anyway recommend you to follow the advices in Kusalananda’s answer that direct you to better techniques to address the problem.







                            share|improve this answer












                            share|improve this answer



                            share|improve this answer










                            answered 8 hours ago









                            LL3LL3

                            8267




                            8267





















                                1














                                You are mixing up output versus return value of a function. I show you minimal working examples, so you can see your mistake:



                                Either do a return:



                                myfunc() 
                                return 1


                                myfunc
                                ret=$?
                                [ $ret -eq 0 ] && echo OK


                                or write to stdout and check the output:



                                myfunc() 
                                echo '1'


                                ret="$(myfunc)"
                                [ "$ret" = '0' ] && echo OK


                                Also note that I prefer distinguishing integer from string of the variable ret, which is not really necessary if you know that the output can only be numeric but makes it cleaner. Furtheron, capturing the return value into a variable is not necessary if the conditional statement follows immediately.



                                It is the first one you wanted to have, so you must not use $(). You really mixed them: Return value as in the first example, and checking output as in the second example.






                                share|improve this answer





























                                  1














                                  You are mixing up output versus return value of a function. I show you minimal working examples, so you can see your mistake:



                                  Either do a return:



                                  myfunc() 
                                  return 1


                                  myfunc
                                  ret=$?
                                  [ $ret -eq 0 ] && echo OK


                                  or write to stdout and check the output:



                                  myfunc() 
                                  echo '1'


                                  ret="$(myfunc)"
                                  [ "$ret" = '0' ] && echo OK


                                  Also note that I prefer distinguishing integer from string of the variable ret, which is not really necessary if you know that the output can only be numeric but makes it cleaner. Furtheron, capturing the return value into a variable is not necessary if the conditional statement follows immediately.



                                  It is the first one you wanted to have, so you must not use $(). You really mixed them: Return value as in the first example, and checking output as in the second example.






                                  share|improve this answer



























                                    1












                                    1








                                    1







                                    You are mixing up output versus return value of a function. I show you minimal working examples, so you can see your mistake:



                                    Either do a return:



                                    myfunc() 
                                    return 1


                                    myfunc
                                    ret=$?
                                    [ $ret -eq 0 ] && echo OK


                                    or write to stdout and check the output:



                                    myfunc() 
                                    echo '1'


                                    ret="$(myfunc)"
                                    [ "$ret" = '0' ] && echo OK


                                    Also note that I prefer distinguishing integer from string of the variable ret, which is not really necessary if you know that the output can only be numeric but makes it cleaner. Furtheron, capturing the return value into a variable is not necessary if the conditional statement follows immediately.



                                    It is the first one you wanted to have, so you must not use $(). You really mixed them: Return value as in the first example, and checking output as in the second example.






                                    share|improve this answer















                                    You are mixing up output versus return value of a function. I show you minimal working examples, so you can see your mistake:



                                    Either do a return:



                                    myfunc() 
                                    return 1


                                    myfunc
                                    ret=$?
                                    [ $ret -eq 0 ] && echo OK


                                    or write to stdout and check the output:



                                    myfunc() 
                                    echo '1'


                                    ret="$(myfunc)"
                                    [ "$ret" = '0' ] && echo OK


                                    Also note that I prefer distinguishing integer from string of the variable ret, which is not really necessary if you know that the output can only be numeric but makes it cleaner. Furtheron, capturing the return value into a variable is not necessary if the conditional statement follows immediately.



                                    It is the first one you wanted to have, so you must not use $(). You really mixed them: Return value as in the first example, and checking output as in the second example.







                                    share|improve this answer














                                    share|improve this answer



                                    share|improve this answer








                                    edited 4 hours ago

























                                    answered 4 hours ago









                                    rexkogitansrexkogitans

                                    395213




                                    395213



























                                        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%2f510269%2fwhich-is-the-best-way-to-check-return-result%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

                                        How to create a command for the “strange m” symbol in latex? Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern)How do you make your own symbol when Detexify fails?Writing bold small caps with mathpazo packageplus-minus symbol with parenthesis around the minus signGreek character in Beamer document titleHow to create dashed right arrow over symbol?Currency symbol: Turkish LiraDouble prec as a single symbol?Plus Sign Too Big; How to Call adfbullet?Is there a TeX macro for three-legged pi?How do I get my integral-like symbol to align like the integral?How to selectively substitute a letter with another symbol representing the same letterHow do I generate a less than symbol and vertical bar that are the same height?

                                        Category:Tremithousa Media in category "Tremithousa"Navigation menuUpload media34° 49′ 02.7″ N, 32° 26′ 37.32″ EOpenStreetMapGoogle EarthProximityramaReasonatorScholiaStatisticsWikiShootMe

                                        Dokschytsy (Steed) Kwelen | NawigatsjuunBelarus: Vitebsk Region, citypopulation.de