You have to tell us how they are encrypted, not how they aren’t encrypted.
Alternatively, now that we know the passwords are only for disk decryption, just go ahead and use your method above. The risk is low since disk decryption protects you against physical loss, leaking a password via a memory attack and having physical access to your machine is pretty unlikely. Any attack that could do that could probably also access your keyfile.
Using read to input a password is about as safe as using clipboard to copy passwords. So moderately safe. A malware could read your memory and discover the password, but then again, a keylogger could read what you type on your keyboard.
Assuming there is no malware on your computer, it should be safe. Once the shell session terminates, the memory will be freed, and there should be no trace of your password in it.
Also, if you don’t want the read command to echo what you type, use the option -s to silence it.
Using unset in unnecessary, but it cannot hurt. Variables are not retained when the shell session closes. And script runs in a separate shell session. Just make sure never to source the script to a current shell session, i.e. run it with . script.sh.