una teclado simbologia signo que por pongo poner listar letra empiecen corchetes como archivos bash grep

bash - teclado - simbologia linux



¿Cómo puede grep interpretar literalmente una cadena que contiene un asterisco y se alimenta a grep a través de una variable? (3)

Como no está utilizando expresiones regulares, puede usar fgrep $CMD lugar de grep

Tengo este script:

#!/bin/bash CLASSPATH="/blah/libs/*:/blah/more/libs" CMD="java -cp $CLASSPATH MainClass" ALREADY_RUNNING_PID=`ps -ef --no-headers | grep $CMD | grep -v grep | awk ''{print $2}''` if [ "$ALREADY_RUNNING_PID" ]; then echo "Already running" exit 1 fi $CMD &

problema es que no funciona debido al asterisco en la variable CMD. ¿Cómo puedo decirle a grep que vea el valor de la variable tal como es? ¿Alguna solución? Es obligatorio que grep se alimente a través de la variable. Gracias.


El problema no es grep, es

CLASSPATH="/blah/libs/*:/blah/more/libs"

Si lo haces

echo $CLASSPATH

debería ver que su shell ha expandido * a todos los archivos en ese directorio. Para remediar esto, solo use comillas simples para evitar englobamiento:

CLASSPATH=''/blah/libs/*:/blah/more/libs''


Totalmente no relacionado con su problema de grep específico, pero jps informará sobre la ejecución de procesos de Java y posiblemente facilitará su almacenamiento, ya que lo más probable es que tenga que hacer:

jps | grep MainClass

(o algo similar)