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).