2012-01-08 29 views
6

Ho uno script di shell foo.sh che è un lavoro qsub con i contenuti:argomento passando script .sh

#!/bin/bash -l 
    #$ -S /bin/bash 
    #$ -N $2 
    echo $1 

Vorrei passare due argomenti. Se chiamo qsub foo.sh a b il primo argomento viene elaborato correttamente ed echo sulla riga di comando come 'a'. Tuttavia, non so come passare un argomento nel secondo caso iniziando con "# $ -N". In questo caso $ 2 non viene valutato in 'b', ma in realtà '$ 2' è impostato. L'aiuto sarebbe molto apprezzato.

+0

Penso che tu debba spiegare cosa intendi con '# $ -N $ 2'. Se il tuo script è uno script bourne shell, questo è un commento (inizia con '#') ma sembra che tu lo intenda come qualcos'altro. – Celada

+0

Ho già provato a spiegarlo, vedi commento a Saptamus Prime. Questa opzione viene utilizzata per impostare il nome del lavoro in un ambiente cluster, ad es. vedere: http://www.clusterresources.com/torquedocs/commands/qsub.shtml. Vero, normalmente # viene utilizzato per i commenti. Ma non quando seguito quando usato nella sintassi # $ -Argument Value. Grazie. – user1137731

+0

Se la domanda riguarda la metasintassi della shell specifica per qsub, dovresti averlo menzionato nella domanda. Ad ogni modo, il link che hai inviato parla di una direttiva '# PBS' ma non menziona' # $ ', quindi non so ancora cosa significhi. In ogni caso, sembra che le direttive 'qsub' siano interpretate da' qsub' stesso ** prima ** lo script viene eseguito, quindi avrebbe senso che gli argomenti passati allo script una volta eseguito non entrino nel trattamento di tali direttive. Penso che tu debba fornire una stringa statica per il nome del lavoro. – Celada

risposta

1

No non si può. Il # all'inizio della riga fa in modo che il $ 2 non venga sostituito dall'argomento dello script. Il modo per fare ciò che stai cercando di fare è

qsub foo.sh -N <name> 
2

Opere fune per me.

Non so che cosa i mezzi di comando -n, ma

#!/bin/bash -l 
#$ -S /bin/bash 
#$ -N $2 
echo $1 
echo $2 

quando viene chiamato da sh foo.sh a b echi prontamente

a 
b 
+0

Grazie per la risposta. Ma ho già detto che l'argomento che passa al comando echo funziona bene. Tuttavia, nel secondo caso '# $ -N $ 2' $ 2 non viene valutato come 'b'.Per dare un contesto: questo è lo script qsub per il motore della griglia solare e l'opzione '-N' imposta il nome del lavoro. Quindi in questo caso il lavoro verrebbe impostato come "$ 2" e non come desiderato come "b". Quindi la domanda generale è: come posso passare i parametri a "# $ -SomeParameterOption" $ 2? Grazie. – user1137731

Problemi correlati