Com o GNU grep , você poderia fazer:
user=$(grep -oP "\\$user.+?'\K[^']+" file)
pass=$(grep -oP "\\$password.+?'\K[^']+" file)
O -P ativa as Expressões Regulares Compatíveis com Perl, que nos fornecem \K (ignore qualquer coisa correspondida até o momento). O -o significa "imprimir apenas a parte correspondente da linha. Em seguida, procuramos $var (precisamos de três \ , para evitar expandir a variável e evitar que o $ seja considerado como parte da regex ), uma aspa simples e um ou mais caracteres que não são ' até o próximo ' .
Como alternativa, você pode usar awk :
user=$(awk -F"'" '/\$user/{print $2}' file)
pass=$(awk -F"'" '/\$password/{print $2}' file)
Aqui, estamos definindo o delimitador de campo para ' , então o valor da variável será o segundo campo. O comando awk imprime o segundo campo de linhas correspondentes.