Linux - Checking if user has entered numbers and letters











up vote
0
down vote

favorite












The script I am trying to create should ask the user to enter a password. This password will then be checked if it contains a capital, characters and numbers



This is all I have so far before I got lost and started googling for ways of doing this



#!/bin/sh
echo "Please enter a password containing numbers and letters"
read password

if [[password =~ [0-9] ]]
then
echo "Successful"
else
echo "Fail"
fi









share|improve this question









New contributor




ElonCode is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.




















  • Is your intent for it to require a number, uppercase, lowercase, and special character?
    – Jesse_b
    yesterday










  • @Jesse_b yes this is what I intend
    – ElonCode
    yesterday















up vote
0
down vote

favorite












The script I am trying to create should ask the user to enter a password. This password will then be checked if it contains a capital, characters and numbers



This is all I have so far before I got lost and started googling for ways of doing this



#!/bin/sh
echo "Please enter a password containing numbers and letters"
read password

if [[password =~ [0-9] ]]
then
echo "Successful"
else
echo "Fail"
fi









share|improve this question









New contributor




ElonCode is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.




















  • Is your intent for it to require a number, uppercase, lowercase, and special character?
    – Jesse_b
    yesterday










  • @Jesse_b yes this is what I intend
    – ElonCode
    yesterday













up vote
0
down vote

favorite









up vote
0
down vote

favorite











The script I am trying to create should ask the user to enter a password. This password will then be checked if it contains a capital, characters and numbers



This is all I have so far before I got lost and started googling for ways of doing this



#!/bin/sh
echo "Please enter a password containing numbers and letters"
read password

if [[password =~ [0-9] ]]
then
echo "Successful"
else
echo "Fail"
fi









share|improve this question









New contributor




ElonCode is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











The script I am trying to create should ask the user to enter a password. This password will then be checked if it contains a capital, characters and numbers



This is all I have so far before I got lost and started googling for ways of doing this



#!/bin/sh
echo "Please enter a password containing numbers and letters"
read password

if [[password =~ [0-9] ]]
then
echo "Successful"
else
echo "Fail"
fi






linux shell-script






share|improve this question









New contributor




ElonCode is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











share|improve this question









New contributor




ElonCode is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









share|improve this question




share|improve this question








edited yesterday









SouravGhosh

371210




371210






New contributor




ElonCode is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









asked yesterday









ElonCode

84




84




New contributor




ElonCode is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





New contributor





ElonCode is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.






ElonCode is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.












  • Is your intent for it to require a number, uppercase, lowercase, and special character?
    – Jesse_b
    yesterday










  • @Jesse_b yes this is what I intend
    – ElonCode
    yesterday


















  • Is your intent for it to require a number, uppercase, lowercase, and special character?
    – Jesse_b
    yesterday










  • @Jesse_b yes this is what I intend
    – ElonCode
    yesterday
















Is your intent for it to require a number, uppercase, lowercase, and special character?
– Jesse_b
yesterday




Is your intent for it to require a number, uppercase, lowercase, and special character?
– Jesse_b
yesterday












@Jesse_b yes this is what I intend
– ElonCode
yesterday




@Jesse_b yes this is what I intend
– ElonCode
yesterday










1 Answer
1






active

oldest

votes

















up vote
2
down vote













Some issues with your code:




  1. You need a space between [[ and password


  2. password will be a variable and therefore needs to be written as $password to expand

  3. You are using the #!/bin/sh hashbang and therefore the bash extended test ([[) may not be available

  4. You are only checking if the password contains numbers




I think a function would be best for checking if the password meets your requirements and have come up with the following:



#!/bin/sh

chk_pass () {
local pass=$1
# Check if password contains uppercase
printf '%s' "$pass" | grep -q '[A-Z]' || return 1
# Check if password contains lowercase
printf '%s' "$pass" | grep -q '[a-z]' || return 1
# Check if password contains numbers
printf '%s' "$pass" | grep -q '[0-9]' || return 1
# Check if password contains special characters
printf '%s' "$pass" | grep -q '[^a-zA-Z0-9 t]' || return 1
return 0
}

printf '%sn' 'Please enter a password containing at least one number, one uppercase letter, one lowercase letter, and one special character: '
read -rs
if chk_pass "$REPLY"; then
printf '%sn' 'Success'
else
printf '%sn' 'Error: Password must contain one number, one uppercase letter, one lowercase letter, and one special character!' >&2
fi


Notes:



The last grep in the function actually only checks that the password contains characters other than alphanumeric or whitespace.

The -r option for read will preserve backslash characters

The -s option for read will hide user input (useful for password input)






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',
    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
    });


    }
    });






    ElonCode is a new contributor. Be nice, and check out our Code of Conduct.










    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f487974%2flinux-checking-if-user-has-entered-numbers-and-letters%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
    2
    down vote













    Some issues with your code:




    1. You need a space between [[ and password


    2. password will be a variable and therefore needs to be written as $password to expand

    3. You are using the #!/bin/sh hashbang and therefore the bash extended test ([[) may not be available

    4. You are only checking if the password contains numbers




    I think a function would be best for checking if the password meets your requirements and have come up with the following:



    #!/bin/sh

    chk_pass () {
    local pass=$1
    # Check if password contains uppercase
    printf '%s' "$pass" | grep -q '[A-Z]' || return 1
    # Check if password contains lowercase
    printf '%s' "$pass" | grep -q '[a-z]' || return 1
    # Check if password contains numbers
    printf '%s' "$pass" | grep -q '[0-9]' || return 1
    # Check if password contains special characters
    printf '%s' "$pass" | grep -q '[^a-zA-Z0-9 t]' || return 1
    return 0
    }

    printf '%sn' 'Please enter a password containing at least one number, one uppercase letter, one lowercase letter, and one special character: '
    read -rs
    if chk_pass "$REPLY"; then
    printf '%sn' 'Success'
    else
    printf '%sn' 'Error: Password must contain one number, one uppercase letter, one lowercase letter, and one special character!' >&2
    fi


    Notes:



    The last grep in the function actually only checks that the password contains characters other than alphanumeric or whitespace.

    The -r option for read will preserve backslash characters

    The -s option for read will hide user input (useful for password input)






    share|improve this answer

























      up vote
      2
      down vote













      Some issues with your code:




      1. You need a space between [[ and password


      2. password will be a variable and therefore needs to be written as $password to expand

      3. You are using the #!/bin/sh hashbang and therefore the bash extended test ([[) may not be available

      4. You are only checking if the password contains numbers




      I think a function would be best for checking if the password meets your requirements and have come up with the following:



      #!/bin/sh

      chk_pass () {
      local pass=$1
      # Check if password contains uppercase
      printf '%s' "$pass" | grep -q '[A-Z]' || return 1
      # Check if password contains lowercase
      printf '%s' "$pass" | grep -q '[a-z]' || return 1
      # Check if password contains numbers
      printf '%s' "$pass" | grep -q '[0-9]' || return 1
      # Check if password contains special characters
      printf '%s' "$pass" | grep -q '[^a-zA-Z0-9 t]' || return 1
      return 0
      }

      printf '%sn' 'Please enter a password containing at least one number, one uppercase letter, one lowercase letter, and one special character: '
      read -rs
      if chk_pass "$REPLY"; then
      printf '%sn' 'Success'
      else
      printf '%sn' 'Error: Password must contain one number, one uppercase letter, one lowercase letter, and one special character!' >&2
      fi


      Notes:



      The last grep in the function actually only checks that the password contains characters other than alphanumeric or whitespace.

      The -r option for read will preserve backslash characters

      The -s option for read will hide user input (useful for password input)






      share|improve this answer























        up vote
        2
        down vote










        up vote
        2
        down vote









        Some issues with your code:




        1. You need a space between [[ and password


        2. password will be a variable and therefore needs to be written as $password to expand

        3. You are using the #!/bin/sh hashbang and therefore the bash extended test ([[) may not be available

        4. You are only checking if the password contains numbers




        I think a function would be best for checking if the password meets your requirements and have come up with the following:



        #!/bin/sh

        chk_pass () {
        local pass=$1
        # Check if password contains uppercase
        printf '%s' "$pass" | grep -q '[A-Z]' || return 1
        # Check if password contains lowercase
        printf '%s' "$pass" | grep -q '[a-z]' || return 1
        # Check if password contains numbers
        printf '%s' "$pass" | grep -q '[0-9]' || return 1
        # Check if password contains special characters
        printf '%s' "$pass" | grep -q '[^a-zA-Z0-9 t]' || return 1
        return 0
        }

        printf '%sn' 'Please enter a password containing at least one number, one uppercase letter, one lowercase letter, and one special character: '
        read -rs
        if chk_pass "$REPLY"; then
        printf '%sn' 'Success'
        else
        printf '%sn' 'Error: Password must contain one number, one uppercase letter, one lowercase letter, and one special character!' >&2
        fi


        Notes:



        The last grep in the function actually only checks that the password contains characters other than alphanumeric or whitespace.

        The -r option for read will preserve backslash characters

        The -s option for read will hide user input (useful for password input)






        share|improve this answer












        Some issues with your code:




        1. You need a space between [[ and password


        2. password will be a variable and therefore needs to be written as $password to expand

        3. You are using the #!/bin/sh hashbang and therefore the bash extended test ([[) may not be available

        4. You are only checking if the password contains numbers




        I think a function would be best for checking if the password meets your requirements and have come up with the following:



        #!/bin/sh

        chk_pass () {
        local pass=$1
        # Check if password contains uppercase
        printf '%s' "$pass" | grep -q '[A-Z]' || return 1
        # Check if password contains lowercase
        printf '%s' "$pass" | grep -q '[a-z]' || return 1
        # Check if password contains numbers
        printf '%s' "$pass" | grep -q '[0-9]' || return 1
        # Check if password contains special characters
        printf '%s' "$pass" | grep -q '[^a-zA-Z0-9 t]' || return 1
        return 0
        }

        printf '%sn' 'Please enter a password containing at least one number, one uppercase letter, one lowercase letter, and one special character: '
        read -rs
        if chk_pass "$REPLY"; then
        printf '%sn' 'Success'
        else
        printf '%sn' 'Error: Password must contain one number, one uppercase letter, one lowercase letter, and one special character!' >&2
        fi


        Notes:



        The last grep in the function actually only checks that the password contains characters other than alphanumeric or whitespace.

        The -r option for read will preserve backslash characters

        The -s option for read will hide user input (useful for password input)







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered yesterday









        Jesse_b

        11.7k23063




        11.7k23063






















            ElonCode is a new contributor. Be nice, and check out our Code of Conduct.










            draft saved

            draft discarded


















            ElonCode is a new contributor. Be nice, and check out our Code of Conduct.













            ElonCode is a new contributor. Be nice, and check out our Code of Conduct.












            ElonCode is a new contributor. Be nice, and check out our Code of Conduct.
















            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.





            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%2funix.stackexchange.com%2fquestions%2f487974%2flinux-checking-if-user-has-entered-numbers-and-letters%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

            Accessing regular linux commands in Huawei's Dopra Linux

            Can't connect RFCOMM socket: Host is down

            Kernel panic - not syncing: Fatal Exception in Interrupt