Da riga di comando grep per una stringa con '$' in esso?
-
12-09-2019 - |
Domanda
Sto cercando di trovare dove due variabili sono concatenati in una directory di script, ma quando provo il seguente:
grep -lire "$DATA_PATH . $AWARDS_YEAR" *
ricevo errori "variabile non definita" ...
Ho pensato che avrei potuto sfuggire al $ s utilizzando:
grep -lire "\$DATA_PATH . \$AWARDS_YEAR" *
Ma ottengo lo stesso errore - così, come si fa a grep per stringhe con $ s in
Soluzione
Tcsh è un po 'diverso sulle variabili rispetto al solito conchiglie, ed è il default su FreeBSD.
Quindi, basta utilizzare le virgolette singole, '$VAR'
, o sfuggire al $
al di fuori delle citazioni: \$"VAR"
Altri suggerimenti
Metti in virgolette singole, con la barra fuga:
grep -lire '\$DATA_PATH . \$AWARDS_YEAR' *
Si noti inoltre, che il punto (.) È un personaggio regex. Se non si vuole che sia, sfuggire, troppo (o non utilizzare l'opzione -e).
Ecco un bella riferimento con informazioni più generali.