Assign return value from python method to a variable in bash script











up vote
0
down vote

favorite












From a shell script, I am executing python program. I am trying to assign the return value from python to a variable in shell script and comparing this variable in if else condition. I don't know where I made a mistake either in code or some syntax. Please help me getting the correct output.



test.sh



#!bin/sh
#!/usr/bin/python2.7
password="Testing@2134testing"
password_check=$(python password.py $password)
if [ "$password_check" == "True" ];then
echo "Correct"
else
echo "Incorrect"
fi


password.py



import re, sys
password = sys.argv[1]
def passwordCheck():
if re.match(r'(?=.*[A-Z])(?=.*[0-9])(?=.*[a-z])(?=.*[^A-Za-z0-9]).{14,}', password):
return True;
else:
return False;


Even the password meets the requirement, it is always showing incorrect.










share|improve this question


























    up vote
    0
    down vote

    favorite












    From a shell script, I am executing python program. I am trying to assign the return value from python to a variable in shell script and comparing this variable in if else condition. I don't know where I made a mistake either in code or some syntax. Please help me getting the correct output.



    test.sh



    #!bin/sh
    #!/usr/bin/python2.7
    password="Testing@2134testing"
    password_check=$(python password.py $password)
    if [ "$password_check" == "True" ];then
    echo "Correct"
    else
    echo "Incorrect"
    fi


    password.py



    import re, sys
    password = sys.argv[1]
    def passwordCheck():
    if re.match(r'(?=.*[A-Z])(?=.*[0-9])(?=.*[a-z])(?=.*[^A-Za-z0-9]).{14,}', password):
    return True;
    else:
    return False;


    Even the password meets the requirement, it is always showing incorrect.










    share|improve this question
























      up vote
      0
      down vote

      favorite









      up vote
      0
      down vote

      favorite











      From a shell script, I am executing python program. I am trying to assign the return value from python to a variable in shell script and comparing this variable in if else condition. I don't know where I made a mistake either in code or some syntax. Please help me getting the correct output.



      test.sh



      #!bin/sh
      #!/usr/bin/python2.7
      password="Testing@2134testing"
      password_check=$(python password.py $password)
      if [ "$password_check" == "True" ];then
      echo "Correct"
      else
      echo "Incorrect"
      fi


      password.py



      import re, sys
      password = sys.argv[1]
      def passwordCheck():
      if re.match(r'(?=.*[A-Z])(?=.*[0-9])(?=.*[a-z])(?=.*[^A-Za-z0-9]).{14,}', password):
      return True;
      else:
      return False;


      Even the password meets the requirement, it is always showing incorrect.










      share|improve this question













      From a shell script, I am executing python program. I am trying to assign the return value from python to a variable in shell script and comparing this variable in if else condition. I don't know where I made a mistake either in code or some syntax. Please help me getting the correct output.



      test.sh



      #!bin/sh
      #!/usr/bin/python2.7
      password="Testing@2134testing"
      password_check=$(python password.py $password)
      if [ "$password_check" == "True" ];then
      echo "Correct"
      else
      echo "Incorrect"
      fi


      password.py



      import re, sys
      password = sys.argv[1]
      def passwordCheck():
      if re.match(r'(?=.*[A-Z])(?=.*[0-9])(?=.*[a-z])(?=.*[^A-Za-z0-9]).{14,}', password):
      return True;
      else:
      return False;


      Even the password meets the requirement, it is always showing incorrect.







      python-2.7 shell






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 19 at 11:49









      Technocrat

      35




      35
























          1 Answer
          1






          active

          oldest

          votes

















          up vote
          0
          down vote



          accepted










          When you run this:



          password_check=$(python password.py $password)


          You are assigning the output of the password.py program to the password_check variable. The problem is that your password.py program doesn't produce any output: in fact, it never even runs the passwordCheck function, because your Python script never calls passwordCheck. Do make things work the way you're trying to use the script, you would need to modify it to (a) actually call the passwordCheck method and (b) print output instead of returning a value:



          import re, sys
          password = sys.argv[1]
          def passwordCheck():
          if re.match(r'(?=.*[A-Z])(?=.*[0-9])(?=.*[a-z])(?=.*[^A-Za-z0-9]).{14,}', password):
          print 'okay'
          return True
          else:
          print 'fail'
          return False

          passwordCheck()


          And then check for that value in your shell script:



          #!bin/sh

          password="Testing@2134testing"
          password_check=$(python password.py $password)
          if [ "$password_check" == "okay" ];then
          echo "Correct"
          else
          echo "Incorrect"
          fi


          Note that Python doesn't require a terminal ; on lines, so instead
          of:



          return False;


          You should write:



          return False


          Additionally, in this example we're using the output of the script
          to determine success/failure. A slightly more robust solution is to
          use the exit code of the script instead. You can probably find a
          variety of examples of using this technique if you explore online a
          bit.






          share|improve this answer





















            Your Answer






            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "1"
            };
            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',
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            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%2fstackoverflow.com%2fquestions%2f53374040%2fassign-return-value-from-python-method-to-a-variable-in-bash-script%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes








            up vote
            0
            down vote



            accepted










            When you run this:



            password_check=$(python password.py $password)


            You are assigning the output of the password.py program to the password_check variable. The problem is that your password.py program doesn't produce any output: in fact, it never even runs the passwordCheck function, because your Python script never calls passwordCheck. Do make things work the way you're trying to use the script, you would need to modify it to (a) actually call the passwordCheck method and (b) print output instead of returning a value:



            import re, sys
            password = sys.argv[1]
            def passwordCheck():
            if re.match(r'(?=.*[A-Z])(?=.*[0-9])(?=.*[a-z])(?=.*[^A-Za-z0-9]).{14,}', password):
            print 'okay'
            return True
            else:
            print 'fail'
            return False

            passwordCheck()


            And then check for that value in your shell script:



            #!bin/sh

            password="Testing@2134testing"
            password_check=$(python password.py $password)
            if [ "$password_check" == "okay" ];then
            echo "Correct"
            else
            echo "Incorrect"
            fi


            Note that Python doesn't require a terminal ; on lines, so instead
            of:



            return False;


            You should write:



            return False


            Additionally, in this example we're using the output of the script
            to determine success/failure. A slightly more robust solution is to
            use the exit code of the script instead. You can probably find a
            variety of examples of using this technique if you explore online a
            bit.






            share|improve this answer

























              up vote
              0
              down vote



              accepted










              When you run this:



              password_check=$(python password.py $password)


              You are assigning the output of the password.py program to the password_check variable. The problem is that your password.py program doesn't produce any output: in fact, it never even runs the passwordCheck function, because your Python script never calls passwordCheck. Do make things work the way you're trying to use the script, you would need to modify it to (a) actually call the passwordCheck method and (b) print output instead of returning a value:



              import re, sys
              password = sys.argv[1]
              def passwordCheck():
              if re.match(r'(?=.*[A-Z])(?=.*[0-9])(?=.*[a-z])(?=.*[^A-Za-z0-9]).{14,}', password):
              print 'okay'
              return True
              else:
              print 'fail'
              return False

              passwordCheck()


              And then check for that value in your shell script:



              #!bin/sh

              password="Testing@2134testing"
              password_check=$(python password.py $password)
              if [ "$password_check" == "okay" ];then
              echo "Correct"
              else
              echo "Incorrect"
              fi


              Note that Python doesn't require a terminal ; on lines, so instead
              of:



              return False;


              You should write:



              return False


              Additionally, in this example we're using the output of the script
              to determine success/failure. A slightly more robust solution is to
              use the exit code of the script instead. You can probably find a
              variety of examples of using this technique if you explore online a
              bit.






              share|improve this answer























                up vote
                0
                down vote



                accepted







                up vote
                0
                down vote



                accepted






                When you run this:



                password_check=$(python password.py $password)


                You are assigning the output of the password.py program to the password_check variable. The problem is that your password.py program doesn't produce any output: in fact, it never even runs the passwordCheck function, because your Python script never calls passwordCheck. Do make things work the way you're trying to use the script, you would need to modify it to (a) actually call the passwordCheck method and (b) print output instead of returning a value:



                import re, sys
                password = sys.argv[1]
                def passwordCheck():
                if re.match(r'(?=.*[A-Z])(?=.*[0-9])(?=.*[a-z])(?=.*[^A-Za-z0-9]).{14,}', password):
                print 'okay'
                return True
                else:
                print 'fail'
                return False

                passwordCheck()


                And then check for that value in your shell script:



                #!bin/sh

                password="Testing@2134testing"
                password_check=$(python password.py $password)
                if [ "$password_check" == "okay" ];then
                echo "Correct"
                else
                echo "Incorrect"
                fi


                Note that Python doesn't require a terminal ; on lines, so instead
                of:



                return False;


                You should write:



                return False


                Additionally, in this example we're using the output of the script
                to determine success/failure. A slightly more robust solution is to
                use the exit code of the script instead. You can probably find a
                variety of examples of using this technique if you explore online a
                bit.






                share|improve this answer












                When you run this:



                password_check=$(python password.py $password)


                You are assigning the output of the password.py program to the password_check variable. The problem is that your password.py program doesn't produce any output: in fact, it never even runs the passwordCheck function, because your Python script never calls passwordCheck. Do make things work the way you're trying to use the script, you would need to modify it to (a) actually call the passwordCheck method and (b) print output instead of returning a value:



                import re, sys
                password = sys.argv[1]
                def passwordCheck():
                if re.match(r'(?=.*[A-Z])(?=.*[0-9])(?=.*[a-z])(?=.*[^A-Za-z0-9]).{14,}', password):
                print 'okay'
                return True
                else:
                print 'fail'
                return False

                passwordCheck()


                And then check for that value in your shell script:



                #!bin/sh

                password="Testing@2134testing"
                password_check=$(python password.py $password)
                if [ "$password_check" == "okay" ];then
                echo "Correct"
                else
                echo "Incorrect"
                fi


                Note that Python doesn't require a terminal ; on lines, so instead
                of:



                return False;


                You should write:



                return False


                Additionally, in this example we're using the output of the script
                to determine success/failure. A slightly more robust solution is to
                use the exit code of the script instead. You can probably find a
                variety of examples of using this technique if you explore online a
                bit.







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 19 at 12:06









                larsks

                112k18184194




                112k18184194






























                    draft saved

                    draft discarded




















































                    Thanks for contributing an answer to Stack Overflow!


                    • 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.





                    Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                    Please pay close attention to the following guidance:


                    • 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%2fstackoverflow.com%2fquestions%2f53374040%2fassign-return-value-from-python-method-to-a-variable-in-bash-script%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

                    "Incorrect syntax near the keyword 'ON'. (on update cascade, on delete cascade,)

                    Alcedinidae

                    Origin of the phrase “under your belt”?