Ini mungkin mudah mati, tetapi adakah cara sederhana untuk menulis perintah sekali di konsol, dan menjalankannya n
kali, di mana n
ditentukan saat runtime? Sesuatu seperti ini:
repeat 100 echo hello
Apakah ada perintah seperti itu (anggap instalasi Linux biasa)?
Atau akankah saya menulis untuk melakukan semacam loop di bash?
command-line
unix
Jørn Schou-Rode
sumber
sumber
for i in {1..100}; do python3 foo.py ; done
dan sebenarnya bermaksud untuk mendapatkan waktu eksekusi (untuk melihat seberapa cepat)time for i in {1..100}; do python3 foo.py ; done
dan kemudian CTRL-C tidak akan dapat menghentikan loopYa, Anda mau, seperti ini:
atau, lebih pendek:
sumber
Selain metode yang lebih bawaan Anda bisa menggunakan utilitas eksternal yang menghasilkan urutan angka.
sumber
Sintaks untuk loop adalah konyol. Ini lebih pendek:
sumber
Saya tidak menemukan alat Linux "standar" untuk melakukan pekerjaan ini, tapi saya biasanya menyimpan file dot saya (.bashrc, .vimrc dll.) Dari instalasi ke instalasi, jadi berikut ini cukup "standar" jika Anda melihatnya dari perspektif melestarikan file dot Anda dalam instalasi baru:
Di akhir .bashrc atau .bash_aliases Anda, masukkan definisi berikut:
Simpan file dan buka kembali shell atau jalankan
source /path/to/.bashrc
atausource /path/to/.bash_aliases
, mana pun yang Anda pilih untuk dimodifikasi, dalam shell yang ada.Itu dia! Anda harus dapat menggunakannya dengan cara berikut:
repeat 100 echo hello
repeat 84 ~/scripts/potato.sh
dll.
sumber
Saat ini, tidak ada jawaban lain yang menggunakan alat Unix standar yang merupakan pertanyaan judul yang ditanyakan.
Mereka semua menggunakan perintah non-standar (
seq
ataujot
) atau ekstensi shell (for
loop gaya-C atau ekspansi brace), yaitu semuanya gagal memenuhi standar POSIX.Berikut ini adalah cara portabel yang harus bekerja dengan semua shell yang sesuai dengan POSIX dan sistem operasi:
sumber