Saya punya program, prog
, yang mengambil argumen integer ketika saya memanggilnya dari terminal, misalnya:
./prog 10
Saya ingin menjalankan prog
dengan rentang nilai, mis. 10, 20, 30, ...
. Apakah ada cara yang rapi untuk melakukannya, selain menggunakan:
./prog 10 ; ./prog 20 ; ./prog 30 ; ....
Jawaban yang Diterima:
Anda dapat menggunakan loop for sederhana dengan Bash, Zsh atau Ksh93.
Berikut ini hanya berfungsi sejak Bash versi 4 (2009), zsh 4.3.10 (2010) dan ksh93r (2006) (meskipun {x..y}
sintaks berasal dari zsh
(dalam 2.6-beta4
pada tahun 1995)).
#!/bin/bash
# since Bash v4
for i in {10..100..10}
do
$path_of_prog/prog $i
done
{$start..$end..$step}
bagian mengatakan bahwa $i
di awal sama dengan $start
dan $i
akan pergi ke $end
.
$step
adalah jumlah yang $i
akan ditingkatkan setiap langkah.
Jadi kita mendapatkan nilai 10 20 30 ... 100
untuk $i
.
Anda juga bisa menulis semuanya dalam satu baris dengan
for i in {10..100..10}; do ./prog $i; done
Jika Anda memiliki seq
Bash dan GNU yang lebih lama tersedia, gunakan baris berikut
#!/bin/bash
#only for pre Bash v4
for i in $(seq 10 10 100)
do
$path_of_prog/prog $i
done
atau sebagai satu baris
for i in $(seq 10 10 100);do ./prog $i; done
(di atas mengasumsikan Anda belum mengubah $IFS
variabel).