PDA

Visualizza la versione completa : script per shell linux


omar_87
28-08-2009, 22:13
Ciao a tutti,

premetto che sto iniziando ora a programmare usando la shell di linux cmq sto cercando di scrivere uno script che lanci due eseguibili uno dopo l'altro iterando queste operazioni un numero di volte pari al valore inserito dall'utente da shell.
Quindi lo script dovrebbe:
-chiedere il num di simulazioni da effettuare
-eseguire per ogni simulazione due file eseguibili
in particolare l'eseguibile2 deve essere eseguito dopo che l'eseguibile1 ha terminato il suo lavoro e ogni nuova iterazione deve essere effettuata alla terminazione dell'eseguibile2 dell'iterazione precedente.
il codice che ho pensato è qst:

#!/bin/sh

echo -n "inserire numero di simulazioni da effettuare:"
read NUM_SIM

for (( X=0; X<NUM_SIM; X++ ))
do
./eseguibile1
./eseguibile2
done
Qst codice però non funziona.
qualcuno può aiutarmi?

saluti

misterx
28-08-2009, 23:11
Originariamente inviato da omar_87
#!/bin/sh

echo -n "inserire numero di simulazioni da effettuare:"
read NUM_SIM

for (( X=0; X<NUM_SIM; X++ ))
do
./eseguibile1
./eseguibile2
done


per il ciclo prova questo

a=0
while [ $a –le $NUM_SIM ]; do

./eseguibile1
./eseguibile2

a=$(expr $a + 1)

done

omar_87
29-08-2009, 11:04
ho provato ad usare il while ma il problema persiste in particolare non entra mai nel ciclo infatti ho provato a stampare a fuori e dentro al ciclo e ho visto che nel ciclo non entra mai.

...
a=0
echo $a
while [ $a –le $NUM_SIM ]; do
echo $a
./eseguibile1
./eseguibile2

a=$(expr $a + 1)

done

L'output di questo codice è:
0
0:not found

Qualcuno sa aiutarmi?Grazie

misterx
29-08-2009, 14:08
Originariamente inviato da omar_87
ho provato ad usare il while ma il problema persiste in particolare non entra mai nel ciclo infatti ho provato a stampare a fuori e dentro al ciclo e ho visto che nel ciclo non entra mai.

...
a=0
echo $a
while [ $a –le $NUM_SIM ]; do
echo $a
./eseguibile1
./eseguibile2

a=$(expr $a + 1)

done

L'output di questo codice è:
0
0:not found

Qualcuno sa aiutarmi?Grazie


ma hai inizializzato NUM_SIM=qualcosa ?????

esempio
NUM_SIM=10

a=0
NUM_SIM=10
while [ $a –le $NUM_SIM ]; do
echo $a
a=$(expr $a + 1)
done


lo script funziona normalmente

omar_87
29-08-2009, 14:35
no non ho inizializzato NUM_SIM forse il problema è di cygwin lo sto usando per emulare la shell in XP...

misterx
29-08-2009, 14:53
se ci fosse una versione di cygwin senza installazione la proverei anch'io

cacao74
29-08-2009, 20:35
Originariamente inviato da omar_87

Qst codice però non funziona.

il tuo codice a prima vista e' corretto.
provandolo funziona pure.

ciao

ah... provato su linux, non ho windows per provare cygwin

Loading