linux - tres - signos de exclamacion
¿Cómo pasar argumentos con signos de exclamación en Linux? (4)
Tengo un script simple de Python que recibe nombre de usuario y contraseña como argumentos, pero mi contraseña contiene dos signos de admiración. Cuando llamo a mi script como
salafek@dellboy:~/Desktop/$ emailsender.py -u username -p pass!!
un comando que ingresé antes reemplaza los signos de exclamación:
salafek@dellboy:~/Desktop/$emailsender.py -u username -p "passemailsender.py -u username -p passwget wget http://www.crobot.com.hr/templog"
Puedo escapar de las marcas de exclamación con barra invertida ( /
), pero mi contraseña cambia.
¿Hay alguna solución para esto? ¿Cómo puedo evitar los signos de exclamación sin cambiar mi contraseña?
Como lo mencionaron otros, este problema no es específico de Python, sino que se debe a la forma en que está pasando el parámetro de contraseña al script.
Deberá ajustar la cadena de contraseña entre comillas simples para asegurarse de que se transmite al guión exactamente como lo escribe, y el intérprete de comandos no la interpreta.
También puede hacer esto para el nombre de usuario, si existe la posibilidad de que incluya un signo de exclamación u otro carácter especial.
Por ejemplo:
emailsender.py -u ''username'' -p ''pass!!''
Debe escaparse con /
o citarlo con comillas simples; de lo contrario, su shell lo interpreta.
emailsender.py -u username -p pass/!/!
o
emailsender.py -u username -p ''pass!!''
Debería poder simplemente ajustar las cosas entre comillas simples en el intérprete de comandos.
$ emailsender.py -u username -p ''pass!!''
Has probado
$ emailsender.py -u username -p "pass!!"
EDITAR - Esto no funcionará. Lea los comentarios a continuación