Cómo pasar la variable de exportación con dos salidas del comando de búsqueda en el script de shell

Cómo pasar la variable de exportación con dos salidas del comando de búsqueda en el script de shell

Tengo un comando de búsqueda como parte de un script y exporto los valores a la variable como se muestra a continuación

export value1="'find /app/new1 -name '*service.sh*'"

Después de las pruebas, me di cuenta de que, en algunos hosts, el directorio es diferente como se muestra a continuación

/sbclocal/app/new1

¿Cómo verifico y paso ambos al mismo valor?

Mientras encuentro este script y lo ejecuto con detener o iniciar más tarde.

Respuesta1

Si entiendo correctamente la pregunta, hay pocas formas de lograr el estado deseado.

  1. findadmite múltiples rutas especificadas. Así que no es gran cosa decirlo de esta manera:

    export value1="$(find /app/new1 /sbclocal/app/new1 -name '*service.sh*')"
    

    Esto producirá un mensaje de error si falta uno de los directorios, pero (dependiendo de su forma) puede que no afecte su secuencia de comandos en general.

  2. Pase dos comandos al valor:

    export value1="$(find /app/new1 -name '*service.sh*' && find /sbclocal/app/new1 -name '*service.sh*')"
    

    Esta opción proporciona una respuesta que se acerca más a su pregunta (pasar dos comandos a la misma variable), pero no parece una mejor solución.

  3. Camino con cheques:

    export value1="$(for dir in /app/new1 /sbclocal/app/new1; do [ -d $dir ] && find $dir -name '*service.sh*'; done)"
    

información relacionada