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 '!'

Character reincarnated...as a snail

Why do I get two different answers for this counting problem?

What's the point of deactivating Num Lock on login screens?

Watching something be written to a file live with tail

"You are your self first supporter", a more proper way to say it

What's that red-plus icon near a text?

Cross compiling for RPi - error while loading shared libraries

Important Resources for Dark Age Civilizations?

What is a clear way to write a bar that has an extra beat?

What is the word for reserving something for yourself before others do?

A newer friend of my brother's gave him a load of baseball cards that are supposedly extremely valuable. Is this a scam?

What defenses are there against being summoned by the Gate spell?

Can I make popcorn with any corn?

Can you really stack all of this on an Opportunity Attack?

What would happen to a modern skyscraper if it rains micro blackholes?

Client team has low performances and low technical skills: we always fix their work and now they stop collaborate with us. How to solve?

Which country benefited the most from UN Security Council vetoes?

Definite integral giving negative value as a result?

Do infinite dimensional systems make sense?

How do I deal with an unproductive colleague in a small company?

LaTeX: Why are digits allowed in environments, but forbidden in commands?

High voltage LED indicator 40-1000 VDC without additional power supply

Why is 150k or 200k jobs considered good when there's 300k+ births a month?

Is it unprofessional to ask if a job posting on GlassDoor is real?



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 '!'






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








5















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






























    5















    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


























      5












      5








      5


      1






      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 2 days ago









      Rui F Ribeiro

      41.9k1483142




      41.9k1483142










      asked 2 days ago









      jaskjask

      484




      484




















          3 Answers
          3






          active

          oldest

          votes


















          14














          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 () 


          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

























          • Amazing!! Your explanation was incredible. Thanks a lot. One more thing. What does "--" in mkdir means? It is the first time that I see this. Thanks a lot!

            – jask
            yesterday






          • 1





            @jask The double dash is a way of saying "there are no further command line options". We use it here because we don't know the value of the variable that we use. If its value starts with a dash, it would be mistaken for a set of command line options. This is not a special thing for mkdir but applies to most command line utilities.

            – Kusalananda
            yesterday



















          2














          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























          • Thanks mate!! As you can see I come from a "standard" language programming so, to me, bash is slightly different. Thanks for your explanation.

            – jask
            yesterday


















          2














          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

























          • Great!! Thanks for the info.

            – jask
            yesterday











          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









          14














          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 () 


          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

























          • Amazing!! Your explanation was incredible. Thanks a lot. One more thing. What does "--" in mkdir means? It is the first time that I see this. Thanks a lot!

            – jask
            yesterday






          • 1





            @jask The double dash is a way of saying "there are no further command line options". We use it here because we don't know the value of the variable that we use. If its value starts with a dash, it would be mistaken for a set of command line options. This is not a special thing for mkdir but applies to most command line utilities.

            – Kusalananda
            yesterday
















          14














          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 () 


          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

























          • Amazing!! Your explanation was incredible. Thanks a lot. One more thing. What does "--" in mkdir means? It is the first time that I see this. Thanks a lot!

            – jask
            yesterday






          • 1





            @jask The double dash is a way of saying "there are no further command line options". We use it here because we don't know the value of the variable that we use. If its value starts with a dash, it would be mistaken for a set of command line options. This is not a special thing for mkdir but applies to most command line utilities.

            – Kusalananda
            yesterday














          14












          14








          14







          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 () 


          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 () 


          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 2 days ago









          Stéphane Chazelas

          313k57592948




          313k57592948










          answered 2 days ago









          KusalanandaKusalananda

          140k17261434




          140k17261434












          • Amazing!! Your explanation was incredible. Thanks a lot. One more thing. What does "--" in mkdir means? It is the first time that I see this. Thanks a lot!

            – jask
            yesterday






          • 1





            @jask The double dash is a way of saying "there are no further command line options". We use it here because we don't know the value of the variable that we use. If its value starts with a dash, it would be mistaken for a set of command line options. This is not a special thing for mkdir but applies to most command line utilities.

            – Kusalananda
            yesterday


















          • Amazing!! Your explanation was incredible. Thanks a lot. One more thing. What does "--" in mkdir means? It is the first time that I see this. Thanks a lot!

            – jask
            yesterday






          • 1





            @jask The double dash is a way of saying "there are no further command line options". We use it here because we don't know the value of the variable that we use. If its value starts with a dash, it would be mistaken for a set of command line options. This is not a special thing for mkdir but applies to most command line utilities.

            – Kusalananda
            yesterday

















          Amazing!! Your explanation was incredible. Thanks a lot. One more thing. What does "--" in mkdir means? It is the first time that I see this. Thanks a lot!

          – jask
          yesterday





          Amazing!! Your explanation was incredible. Thanks a lot. One more thing. What does "--" in mkdir means? It is the first time that I see this. Thanks a lot!

          – jask
          yesterday




          1




          1





          @jask The double dash is a way of saying "there are no further command line options". We use it here because we don't know the value of the variable that we use. If its value starts with a dash, it would be mistaken for a set of command line options. This is not a special thing for mkdir but applies to most command line utilities.

          – Kusalananda
          yesterday






          @jask The double dash is a way of saying "there are no further command line options". We use it here because we don't know the value of the variable that we use. If its value starts with a dash, it would be mistaken for a set of command line options. This is not a special thing for mkdir but applies to most command line utilities.

          – Kusalananda
          yesterday














          2














          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























          • Thanks mate!! As you can see I come from a "standard" language programming so, to me, bash is slightly different. Thanks for your explanation.

            – jask
            yesterday















          2














          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























          • Thanks mate!! As you can see I come from a "standard" language programming so, to me, bash is slightly different. Thanks for your explanation.

            – jask
            yesterday













          2












          2








          2







          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 2 days ago









          LL3LL3

          9667




          9667












          • Thanks mate!! As you can see I come from a "standard" language programming so, to me, bash is slightly different. Thanks for your explanation.

            – jask
            yesterday

















          • Thanks mate!! As you can see I come from a "standard" language programming so, to me, bash is slightly different. Thanks for your explanation.

            – jask
            yesterday
















          Thanks mate!! As you can see I come from a "standard" language programming so, to me, bash is slightly different. Thanks for your explanation.

          – jask
          yesterday





          Thanks mate!! As you can see I come from a "standard" language programming so, to me, bash is slightly different. Thanks for your explanation.

          – jask
          yesterday











          2














          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

























          • Great!! Thanks for the info.

            – jask
            yesterday















          2














          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

























          • Great!! Thanks for the info.

            – jask
            yesterday













          2












          2








          2







          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 2 days ago

























          answered 2 days ago









          rexkogitansrexkogitans

          405313




          405313












          • Great!! Thanks for the info.

            – jask
            yesterday

















          • Great!! Thanks for the info.

            – jask
            yesterday
















          Great!! Thanks for the info.

          – jask
          yesterday





          Great!! Thanks for the info.

          – jask
          yesterday

















          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

          getting Checkpoint VPN SSL Network Extender working in the command lineHow to connect to CheckPoint VPN on Ubuntu 18.04LTS?Will the Linux ( red-hat ) Open VPNC Client connect to checkpoint or nortel VPN gateways?VPN client for linux machine + support checkpoint gatewayVPN SSL Network Extender in FirefoxLinux Checkpoint SNX tool configuration issuesCheck Point - Connect under Linux - snx + OTPSNX VPN Ububuntu 18.XXUsing Checkpoint VPN SSL Network Extender CLI with certificateVPN with network manager (nm-applet) is not workingWill the Linux ( red-hat ) Open VPNC Client connect to checkpoint or nortel VPN gateways?VPN client for linux machine + support checkpoint gatewayImport VPN config files to NetworkManager from command lineTrouble connecting to VPN using network-manager, while command line worksStart a VPN connection with PPTP protocol on command linestarting a docker service daemon breaks the vpn networkCan't connect to vpn with Network-managerVPN SSL Network Extender in FirefoxUsing Checkpoint VPN SSL Network Extender CLI with certificate

          Cannot Extend partition with GParted The 2019 Stack Overflow Developer Survey Results Are In Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern) 2019 Community Moderator Election ResultsCan't increase partition size with GParted?GParted doesn't recognize the unallocated space after my current partitionWhat is the best way to add unallocated space located before to Ubuntu 12.04 partition with GParted live?I can't figure out how to extend my Arch home partition into free spaceGparted Linux Mint 18.1 issueTrying to extend but swap partition is showing as Unknown in Gparted, shows proper from fdiskRearrange partitions in gparted to extend a partitionUnable to extend partition even though unallocated space is next to it using GPartedAllocate free space to root partitiongparted: how to merge unallocated space with a partition

          NetworkManager fails with “Could not find source connection”Trouble connecting to VPN using network-manager, while command line worksHow can I be notified about state changes to a VPN adapterBacktrack 5 R3 - Refuses to connect to VPNFeed all traffic through OpenVPN for a specific network namespace onlyRun daemon on startup in Debian once openvpn connection establishedpfsense tcp connection between openvpn and lan is brokenInternet connection problem with web browsers onlyWhy does NetworkManager explicitly support tun/tap devices?Browser issues with VPNTwo IP addresses assigned to the same network card - OpenVPN issues?Cannot connect to WiFi with nmcli, although secrets are provided