PDA

View Full Version : come creare uno scriptino?


NeoNum6
10-06-2006, 10:16
ragazzi avrei bisogno di eseguire più volte lo stesso comando su shell...o anche comandi diversi ma in sequenza .... volevo avere qualche consiglio su come fare...quale linguaggio utilizzare...python, perl ecc...

Scoperchiatore
10-06-2006, 10:43
Usa python e perl solo se ti tocca spesso fare il parsing di stringhe complesse.

Megli altri casi, usa uno script della bash.
http://www.pluto.it/files/ildp/guide/abs/index.html

La sintassi bash va studiata, è abbastanza tediosa, ma poi ci si abitua.
Se hai problemi, posta qui la tua esigenza specifica, così il primo script te lo posso fare io, e hai qualcosa su cui partire per i prossimi ;)

NeoNum6
10-06-2006, 10:45
grazie mille...ci guardo subito e in caso di problemi posterò qui :D
curiosità: ma c'è modo di farli anche in java??

guldo76
10-06-2006, 14:45
ma c'è modo di farli anche in java??
Puoi scrivere un programma java che crei dei processi basati sui comandi che vuoi eseguire, ma non mi sembra proprio il caso...
Anche perché non sarebbero più degli script, tra l'altro.

NeoNum6
10-06-2006, 15:10
..infatti guldo76!credo che inizierò con bash per poi magari imparare python.....:D

NeoNum6
10-06-2006, 15:46
for VAR in [82, 184] ;
do

echo $VAR

done

e se io volessi far stampare tutti i numeri da 0 a 100?? ho provato con 0-100 ma niente...la guida non è esaustiva in questo caso...

...cercando su google ho trovato il comando 'seq 0 100'...però non sono riuscito a farlo funzionare...che sia meglio un while in questo caso???

guldo76
10-06-2006, 16:47
..infatti guldo76!credo che inizierò con bash per poi magari imparare python.....:D
Ottimo! :D
e se io volessi far stampare tutti i numeri da 0 a 100?
for((i=0; i<=100; i++)); do echo $i; done

NeoNum6
10-06-2006, 17:25
for((i=0; i<=100; i++)); do echo $i; done

come mai due parentesi???
...giubilo del fatto che è come il C o Java...ma alle due parentesi non ci avrei mai pensato!!!
cmq ho googlato ancora...e ho risolto così:

while [$i -lt 100]
do
echo $i
let i=i+1
done



però ignoro cosa sia quel lt e quel let....:D cmq ora funge :D:D :cool:

astorcas
10-06-2006, 22:40
-lt = less than = minore di

let significa che forzi la variabile i a numerica :)

NeoNum6
11-06-2006, 16:42
ok grazie mille :D

Scoperchiatore
12-06-2006, 08:54
c'è anche seq

seq a b
stampa tutti in numeri da "a" compreso fino a "b" escluso.

quindi potevi fare

for i in `seq 0 100`; do .... ; done

seq è utile quando hai a che fare con nomi di files: infatti senza l'opzioncina apposita, non stampa gli "0" riempitivi. In questo caso, il suo risultato è 0 1 2 3 4 5 6 7... e non 001 002 003 004 005.

Questi cosi : `
si chiamano backslashes e servono per eseguire un comando "al volo". In realtà l'uso dei backslashes è fondamentale per uno scripter professionista, ma ne capirai l'importanza quando ne sentirai la necessità.

Imparata la pipe "|" e il grep, hai visto il 50% delle cose che si usano negli scripts. Il resto sono "if", sintassi e comandi.

NeoNum6
13-06-2006, 19:49
grazie tante a tutti :D