gaspar gaspar - 1 month ago 10
Bash Question

pass special characters from input to bash script

I've a bash script that simple has to add new user and sign a password that is passed when script is called:

./adduser_script username password


and the password is then used as a parameter in the script like this:

/usr/sbin/useradd ... -p `openssl passwd -1 "$2"` ...


the problem occurs of course when password contains special characters like $@, $* itd. So when i call the script:

/adduser_script username aa$@bbb


and after script ends password looks like: aabbb (so the special charakters are removed from original password). The question is how can I correctly pass the original password with special charakters to the script?

Thanks in advance,
Regards

Answer

have you tried strong qoutes ??

use 'aa$@bb' instead of weak qoutes i.e. "aa$@bb"

for example: check with echo command

echo "aa$@bb" will print aabb

while

echo 'aa$@bb' will print aa$@bb

In your script use

/usr/sbin/useradd ... -p `openssl passwd -1 '$2'` ...

now you need not to worry about qoutes while passing password as argument.