Mám program prog
, který při volání z terminálu přebírá celočíselný argument, např.:
./prog 10
Chtěl bych spustit prog
s rozsahem hodnot, např. 10, 20, 30, ...
. Existuje úhledný způsob, jak to udělat, kromě použití:
./prog 10 ; ./prog 20 ; ./prog 30 ; ....
Přijatá odpověď:
Můžete použít jednoduchou smyčku for s Bash, Zsh nebo Ksh93.
Následující funguje pouze od verze Bash 4 (2009), zsh 4.3.10 (2010) a ksh93r (2006) (ačkoli {x..y}
syntaxe pochází z zsh
(v 2.6-beta4
v roce 1995).
#!/bin/bash
# since Bash v4
for i in {10..100..10}
do
$path_of_prog/prog $i
done
{$start..$end..$step}
část říká, že $i
je na začátku roven $start
a $i
přejde na $end
.
$step
je částka, se kterou $i
se bude každým krokem zvyšovat.
Dostaneme tedy hodnoty 10 20 30 ... 100
pro $i
.
Můžete to také napsat na jeden řádek pomocí
for i in {10..100..10}; do ./prog $i; done
Pokud máte starší Bash a GNU seq
je k dispozici, použijte následující řádky
#!/bin/bash
#only for pre Bash v4
for i in $(seq 10 10 100)
do
$path_of_prog/prog $i
done
nebo jako jedna vložka
for i in $(seq 10 10 100);do ./prog $i; done
(výše předpokládá, že jste neupravili $IFS
proměnná).