我的代碼未能驗證if語句中給出的一些邏輯標準。我是bash的新手,所以任何幫助都會很棒。我的代碼運行,但在我的邏輯失敗。另外,我想了解更多先進的編寫bash腳本的方法。任何建議將不勝感激。Bash腳本檢查密碼標準與密碼加密
function validatePassword()
{
local stat=1 #assigns 1 to (stat)
local pass=$1
LEN=${#pass} #counts each character in the password length
echo $LEN #Prints string length
#checks for nums chesks for lowercase checks for uppercase checks if pass is greater than 8
if [[ $pass =~ [0-9] ]] && [[ $pass =~ [a-z] ]] && [[ $pass =~ [A-Z] ]] && [[ "$LEN" -ge 8 ]]; then
stat=$? #return 1 for false
fi
return $stat
}
function encryptPassword()
{
dual=abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
phrase=$encryptedPassword
rotat=13
newphrase=$(echo $phrase | tr "${dual:0:26}" "${dual:${rotat}:26}")
echo "Your encrypted password is ${newphrase}"
}
#Promts the user for input storing into variable PASSWORD
read -p "Enter your password:" -e PASSWORD
passwordToCheck=$PASSWORD
encryptedPassword=$PASSWORD
validatePassword $passwordToCheck #Calls function passsing value of (PASSWORD)
encryptPassword $encryptedPassword #Calls function passing value of (PASSWORD)
if [[ $? -ne 0 ]]; then #(-ne) not equal command
echo "Invalid password"
else
echo "Password is valid"
fi
#! /bin/bash
讀-p 「輸入一個數字:」 #Prompt &閱讀串-e輸入。 echo「您的輸入是$輸入」 echo#passwd> = 8 #check uppder #check lower #check for num if echo「$ input」| egrep「^。{8,255}」| egrep「[A-Z]」| egrep「[a-z]」| egrep「[0-9]」;然後 回聲「密碼有效期」 其他 回聲「密碼無效」 網絡
回聲「$輸入」 | TR 'A-ZA-z0-5' 'N-ZA - 錳 - ZA-m6-9-5'
出口0
問題是什麼? – devnull
您是不是要在調用驗證函數之後放置返回值檢查(即,* validatePassword和encryptPassword之間的*)? –
我能夠在這裏工作是我的更新。 #!/bin/bash read -p「輸入數字:」-e輸入#Prompt&讀取字符串。 回聲 「你輸入$輸入」 呼應\t \t \t#passwd文件> = 8 \t#檢查uppder \t#檢查下\t#檢查爲NUM 如果回聲 「$輸入」 | egrep「^。{8,255}」| egrep「[A-Z]」| egrep「[a-z]」| egrep「[0-9]」;然後 \t回聲「密碼有效期」 其他 \t回聲「密碼無效」 網絡 回聲「$輸入」 | tr'A-Za-z0-5'N-ZA-Mn-za-m6-9-5' exit 0 –