la ligne de commande grep pour une chaîne avec « $ » en elle?
-
12-09-2019 - |
Question
Je suis en train de trouver où deux variables sont concaténées dans un répertoire de scripts, mais quand je les opérations suivantes:
grep -lire "$DATA_PATH . $AWARDS_YEAR" *
Je reçois des erreurs "variable non définie" ...
Je pensais que je pouvais échapper au $ s en utilisant:
grep -lire "\$DATA_PATH . \$AWARDS_YEAR" *
Mais je reçois la même erreur - alors, comment voulez-vous grep pour les chaînes avec $ s
La solution
Tcsh est un peu différent sur les variables que les coquilles habituelles, et il est la valeur par défaut sur FreeBSD.
Alors, il suffit d'utiliser des guillemets simples, '$VAR'
ou échapper à la $
en dehors des citations: \$"VAR"
Autres conseils
Mettez des guillemets simples, avec la barre oblique échapper:
grep -lire '\$DATA_PATH . \$AWARDS_YEAR' *
A noter également, que le point (.) Est un caractère regex. Si vous ne voulez pas qu'il soit, y échapper, trop (ou ne pas utiliser l'option -e).
Voici un belle référence avec des informations plus générales.