Come utilizzare globstar su bash precedente alla v4


0

Usiamo questo comando per eseguire tutti i test usando moca : mocha ./src/test/**/*.js --recursive

Notare il doppio **. Funziona bene su qualsiasi bash moderno, ad eccezione del sistema CI con RedHat GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu).

L'ho letto v3 non supporta la doppia globstar .

  • ho provato a abilitarlo eseguendo shopt -s globstar
    • ma non è riuscito a dire shopt: globstar: invalid shell option name.
  • Ho chiesto ai devops del cliente di aggiornare la bash
    • ma ha detto "non mi mostra che è disponibile una nuova versione di bash".
  • Questo altra risposta non è stato utile

Domanda: Come posso eseguire un comando con ** su un Linux Linux v3. *? Qualche soluzione?

Risposte:


5

Se non supporta globstar, non lo supporta.

Tuttavia, la maggior parte delle volte puoi adattarti find, xargse / o strumenti simili. Il tuo caso è piuttosto semplice, con tutto sotto un'unica directory, quindi:

find src/test -name "*.js" -exec mocha --recursive {} +

find src/test -name "*.js" -print | xargs -d '\n' mocha --recursive

( trova mette i nomi dei file al posto di {}, e xargs li accoda fino alla fine. Quindi, in entrambi i casi, gli argomenti ripetuti devono andare alla fine dopo tutte le opzioni -, ma questo non dovrebbe essere un problema per la maggior parte dei programmi.)

In alternativa, se in esecuzione mocha una volta per ogni file va bene, allora:

find src/test -name "*.js" -exec mocha {} --recursive \;

Confrontare -exec … \; (un file alla volta) e il precedente -exec … + (il più possibile).

Nota: In tutti gli esempi sopra, il "*.js" deve essere citato perché tu vuoi find per elaborarlo, non la shell.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.