Dalam bash, saya tahu bahwa adalah mungkin untuk menulis for
loop di mana beberapa variabel kontrol loop i
berulang di atas bilangan bulat yang ditentukan. Misalnya, saya bisa menulis skrip bash shell yang mencetak bilangan bulat antara 1 dan 10:
#!/bin/bash
for i in {1..10}
do
echo $i
done
Apakah mungkin untuk beralih di atas variabel kontrol loop yang merupakan string, jika saya memberikan daftar string? Misalnya, anggap saya memiliki string fname
yang mewakili nama file. Saya ingin memanggil satu set perintah untuk setiap nama file. Misalnya, saya mungkin ingin mencetak konten fname
menggunakan perintah seperti ini:
#!/bin/bash
for fname in {"a.txt", "b.txt", "c.txt"}
do
echo $fname
done
Dengan kata lain, pada iterasi pertama, fname
harus memiliki nilai fname="a.txt"
, sedangkan pada iterasi kedua, fname
harus memiliki nilai fname="b.txt"
, dan seterusnya. Sayangnya, tampaknya sintaks di atas tidak sepenuhnya benar. Saya ingin mendapatkan output:
a.txt
b.txt
c.txt
tetapi ketika saya mencoba kode di atas, saya mendapatkan output ini:
{a.txt,
b.txt,
c.txt}
Bisakah Anda membantu saya menentukan sintaks yang benar, sehingga saya bisa mengubah nilai / konten variabel secara berulang fname
? Terima kasih atas waktu Anda.
{}
dan yang ,
s. Alternatifnya adalah menghapus spasi. Jadi salah satu "a.txt" "b.txt" "c.txt"
atau {"a.txt","b.txt","c.txt"}
. Tapi saya lebih suka {a..c}.txt
sebagai gantinya.
{}
, Anda tidak perlu apa pun untuk mengulang daftar (dibatasi-ruang)