2012-08-09 12 views
5

Diciamo che c'è una variabile bashcome eseguire due comandi memorizzati in una variabile bash

run1 = "data"

ho bisogno di eseguire date da

$ {run1}

E funziona, dal momento che pri ora attuale. Ma se metto due comandi nella variabile,

run2 = "data; echo foo"

Non posso eseguire i comandi memorizzati nella variabile run2, poiché ${run2} lamenta

data ;: comando non trovato

risposta

5

Prova:

012.
eval ${run2} 

Questo dovrebbe aiutare.

+0

funziona ... forse sono curioso, ma puoi spiegare perché funziona per '' run1'' ma non per '' run2'' ... – Richard

+1

Perché è quotato, il punto e virgola fa parte di la prima parola dopo la rimozione delle virgolette, non un elemento sintattico per separare due comandi. – chepner

2

Prova eval "${run2}". Questo interpreterà la variabile come una sequenza di comandi da eseguire.

Problemi correlati