2009-11-08 12 views
34

Voglio scrivere un semplice script bash che fungerà da wrapper per un file eseguibile. Come faccio a passare tutti i parametri che lo script riceve nell'eseguibile? Ho provatoparametri Passo script bash per sottoprocesso invariato

/the/exe [email protected] 

ma questo non funziona con parametri quotati, ad es.

./myscript "one big parameter" 

corre

/the/exe one big parameter 

che non è la stessa cosa.

risposta

49

Quando uno script di shell avvolge un eseguibile, e se non si vuole fare nulla dopo l'eseguibile completa (che è un caso comune per gli script di wrapper , nella mia esperienza), il modo corretto per chiamare l'eseguibile è:

exec /the/exe "[email protected]" 

il exec built-in indica alla shell di dare solo il controllo per l'eseguibile senza sborsare.

Praticamente, che impedisce un processo shell inutile dal giro nel sistema fino a quando il processo termina avvolto.

Ciò significa anche che nessun comando può essere eseguito dopo il comando exec.

+0

Eccellente, non lo sapevo, grazie! – EMP

10

devi mettere il [email protected] tra virgolette:

/the/exe "[email protected]" 
+0

Grande, grazie! Ho pensato che avrebbe messo tutti i parametri in una serie di virgolette, ma funziona correttamente. – EMP