grep de línea de comandos para una cadena con '$' en ella?
-
12-09-2019 - |
Pregunta
Estoy tratando de encontrar donde dos variables se concatenan en un directorio de secuencias de comandos, pero cuando intento el siguiente:
grep -lire "$DATA_PATH . $AWARDS_YEAR" *
recibo mensajes de error "variable no definida" ...
pensé que podía escapar de la $ s utilizando:
grep -lire "\$DATA_PATH . \$AWARDS_YEAR" *
Pero consigo el mismo error - es así, ¿cómo se grep para cuerdas con $ s en
Solución
Tcsh es un poco diferente sobre las variables que las conchas habituales, y es el valor por defecto en FreeBSD.
Por lo tanto, sólo tiene que utilizar comillas simples, '$VAR'
, o escapar de la $
fuera de las comillas: \$"VAR"
Otros consejos
Ponga entre comillas simples, con la barra de escapar:
grep -lire '\$DATA_PATH . \$AWARDS_YEAR' *
Tenga en cuenta también, que el punto (.) Es un personaje de expresiones regulares. Si no quiere que sea, escapar de ella, también (o no utilice la opción -e).
Aquí hay una buena referencia con información más general.