Я даю командную строку как -p $ 3, которая будет принимать пароль, и если пароль не имеет $, он работает, но если у пароля есть $, -p $ 3 не работает , Как мы можем подсказать пароль, в котором есть $.
Вам необходимо добавить двойные кавычки до и после пароля
my_pass="some_password"
#or in the case you're getting the password from a command-line argument
mypass="$1"
mysql -u user -p"$mypass"
Или, если у вас есть $$
в вашем пароле (bash оценит это по своему PID
номер) вы должны добавить \
перед $$
в вашем пароле:
./script.sh some_arg1 some_arg2 some_pass_\$$
Но учтите, что передача пароля в качестве параметра в командной строке в командной строке небезопасна в виде простого текста, потому что эта строка может перейти в вашу ~ / .bash_history
.