View Full Version : script per shell linux
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
DanieleC88
28-08-2009, 21:44
Non ho una macchina con Linux a disposizione e non posso verificare, ma non ci vuole il simbolo $ di dollaro quando leggi variabili? Nel for non lo vedo, potrebbe essere quello.
ciao ;)
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
Se devi eseguire un tot di volte un ciclo, ottimizza il ciclo utilizzando un While, dato che il for esamina sempre la condizione data... magari a te non importa ma negli script di una certa dimensione è importante...
Comunque un'esempio funzionante (ho solo tolto gli eseguibili dato che non ce li avevo...):
#!/bin/sh
echo -n "inserire numero di simulazioni da effettuare: "
read NUM_SIM
X=0
while [ "$X" -lt "$NUM_SIM" ]
do
echo "ciao"
X=$(($X + 1))
done
Buona serata.
DanieleC88
28-08-2009, 22:55
Se devi eseguire un tot di volte un ciclo, ottimizza il ciclo utilizzando un While, dato che il for esamina sempre la condizione data... magari a te non importa ma negli script di una certa dimensione è importante...
Questa non l'ho capita, perché, while la condizione la controlla ad ogni morte di papa? :D
Se mi dici che la condizione viene ricalcolata ad ogni iterazione allora posso capire, ma solo se include l'output di qualche programma esterno nella condizione. Personalmente credo sia inutile preoccuparsi fino a questo punto delle prestazioni, in particolare perché chi vuole scrivere programmi "seri e performanti" lo farà magari in C o in C++, non scrive script per BASH. :)
ciao ;)
Questa non l'ho capita, perché, while la condizione la controlla ad ogni morte di papa? :D
Se mi dici che la condizione viene ricalcolata ad ogni iterazione allora posso capire, ma solo se include l'output di qualche programma esterno nella condizione.
ciao ;)
Si è quello che intendevo. Appunto un ciclo while semplicemente esegue il blocco di codice sino a una data condizione, al cui verificarsi termina.
Chiedo scusa se non mi sono spiegato bene.
Personalmente credo sia inutile preoccuparsi fino a questo punto delle prestazioni, in particolare perché chi vuole scrivere programmi "seri e performanti" lo farà magari in C o in C++, non scrive script per BASH. :
Probabilmente è inutile ma può darsi (e aggiungo: secondo me) imparare a ottimizzare anche degli script semplici semplici e in linguaggi che non sono adatti -o comunque idonei- alle massime ottimizzazioni può aiutare in futuro a ricordarsi di cosa ottimizzare, dove e quando (senza rinunciare alla comodità per le prestazioni - come i più maniaci e sciocchi fanno -.
Ps. sulle prestazioni dei programmi non ci metto lingua, ma sulla serietà di alcuni... :sofico: (homemade intendo v.v)
ciao ;)
Ciauz! e buona serata.
Grazie per il codice ho provato ad eseguirlo però a me non funziona:
subito dopo il do ho messo un echo X e l'output generato è:
=0: not found
Io sto usando cygwin per emulare una shell linux su XP, cm mai a me non funziona?
ciao
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.