Cómo ejecutar el command que está en una variable

Mi condición es como a continuación. ¿Alguien podría ayudar, por favor?

SEARCH="find `pwd` -name" bash> $SEARCH resources.xml | grep $SEARCH_DIR | grep $1 | grep 'cells' 

Pero no pwd el pwd como se menciona en esa variable.

Por favor ayuda

 alias SEARCH='find . -name' 

O

 SEARCH() { find . -name "$1"; } 

Uso

 SEARCH resources.xml | ... 

Tenga en count que SEARCH no es una variable. Puede definir el command como una variable ( SEARCH='find . -name' ) pero la definición de alias o function es una práctica más habitual.

Digamos que el directory actual es /original/directory en el momento en que se evalúa la línea SEARCH=… y /later/directory en el momento en que se evalúa la línea $SEARCH …

La sustitución de command `pwd` se evalúa en el momento en que se define la variable SEARCH , por lo que SEARCH se configura para find /original/directory -name . Si el directory actual en ese momento no contiene ningún espacio en blanco o caracteres comodín, entonces $SEARCH resources.xml llama más adelante en ese directory, es decir, find /original/directory -name resources.xml .

Si el directory actual original contiene espacios en blanco o comodines, esto no funcionará. Rellenar un command en una variable como esta no funciona, excepto en casos muy simples. Ver ¿Por qué mi script de shell se ahoga en espacios en blanco u otros caracteres especiales?

Si desea ejecutar find in /later/directory , entonces puede ejecutar find . . Pero una variable no es la herramienta correcta aquí. Una variable es para almacenar una cadena. Un command con parameters no es una cadena, es una list de cadenas. Y un fragment de código de shell se puede almacenar en una cadena, pero $SEARCH no ejecuta el valor de SEARCH como fragment de código de shell (una vez más, ver ¿Por qué mi script de shell se atasca en espacios en blanco u otros caracteres especiales? ). Para almacenar un fragment de código de shell para su uso posterior, defina una function.

 SEARCH () { find "$PWD" -name "$@" } … SEARCH resources.xml | … 

Una vez más, esto ejecuta find in /later/directory . Si desea ejecutar find en el /original/directory , la mejor manera es almacenar ese directory en una variable y usar esa variable más adelante.

 original_directory="$PWD" SEARCH () { find "$original_directory" -name "$@" } … SEARCH resources.xml | …