Ho un programma, prog
, che accetta un argomento intero quando lo chiamo dal terminale, ad esempio:
./prog 10
Vorrei eseguire prog
con un intervallo di valori, ad es. 10, 20, 30, ...
. C'è un modo semplice per farlo, oltre a usare:
./prog 10 ; ./prog 20 ; ./prog 30 ; ....
Risposta accettata:
Puoi utilizzare un ciclo for semplice con Bash, Zsh o Ksh93.
Quanto segue funziona solo da Bash versione 4 (2009), zsh 4.3.10 (2010) e ksh93r (2006) (sebbene il {x..y}
la sintassi ha origine in zsh
(in 2.6-beta4
nel 1995)).
#!/bin/bash
# since Bash v4
for i in {10..100..10}
do
$path_of_prog/prog $i
done
Il {$start..$end..$step}
parte dice che $i
è all'inizio uguale a $start
e $i
andrà a $end
.
Il $step
è l'importo con cui $i
verrà aumentato ad ogni passaggio.
Quindi otteniamo i valori 10 20 30 ... 100
per $i
.
Potresti anche scrivere tutto in una riga con
for i in {10..100..10}; do ./prog $i; done
Se hai un vecchio Bash e GNU seq
è disponibile, utilizzare le seguenti righe
#!/bin/bash
#only for pre Bash v4
for i in $(seq 10 10 100)
do
$path_of_prog/prog $i
done
o come una fodera
for i in $(seq 10 10 100);do ./prog $i; done
(quanto sopra presuppone che tu non abbia modificato il $IFS
variabile).