username and pass login loop bash -
the loop gets initiated though if statement makes no sense, new bash not lot of things make sense me
first=0 echo enter username read user log1=$(grep -q $user username_pass.txt) echo enter password read pass log2=$(grep -q $pass username_pass.txt ) if [ $log1=0 ] && [ $log2=0 ]; echo welcome first=1 fi while [ $log1=1 ] || [ $log2=1 ]; echo wrong user name or password echo enter username read user echo enter password read pass done if [ $log1=0 ] && [ $log2=0 ] && [ first=0 ]; echo welcome fi
[ … ] not particularly special syntax in shells. you’re passing arguments $log1=0 , ] command called [, removes ] arguments , passes rest test. supposing $log1 contains “username”, result is:
test 'username=0' when test gets 1 argument, checks if argument non-empty string. $log1=0 never empty string.
what you’re looking pass operator , operands separate arguments, this:
if [ "$log1" = 0 ] && [ "$log2" = 0 ]; note quotes, prevent $log1 being expanded more 1 argument.
you meant exit code grep instead of output if you’re comparing against number, $? after running command:
grep -q "$user" username_pass.txt log1=$? you split out function ease of use.
test_credentials() { grep -q "$1" username_pass.txt || return 1 grep -q "$2" username_pass.txt || return 1 } if test_credentials "$user" "$pass"; … you might want rethink how you’re checking credentials. grepping same file twice have many problems, 1 problem definitely has can log in using username password.
Comments
Post a Comment