Mainan For di bash Linux

Terimakasih yang mau menunggu lama artikel singkat ini, maaf requestnya baru kejawab :D. Antri. Seorang rekan bertanya : “Bagaimana bisa otomatis membuat direktori yang sama dengan isi tabel user di sebuah tabel user mysql? Syaratnya perintahnya singkat”. Ilustrasinya adalah sebagai berikut. Terdapat sebuah tabel user pada database pegawai, dengan isi sebagai berikut:

Id username
1 bimo
2 wahyu
3 sukar

Dari sejumlah nama itu akan dibuat sebuah direktori yang berisi subdirektori yang memiliki nama seperti pada tabel tersebut.
Mula-mula kita perlu tahu perintah bash shell mysql untuk menampilkan tabel. Kita tahu bahwa syntax mysql untuk menampilkan isi tabel user pada database pegawai adalah

select * from pegawai.user;

Untuk menampilkan dalam bash shell adalah sebagai berikut:

mysql -u user -p -e 'select * from pegawai.user'

Dengan user = root dan password=root, maka dapat disesuaikan isinya.

mysql -u root -p -e 'select * from pegawai.user'

Untuk satu kolom:

mysql -u root -p -e 'select username from pegawai.user'

Hasilnya adalah:

+----------+
| username |
+----------+
| admin    | 
| bimo     | 
| dini     | 
+----------+

Maka setelah mengisikan password, akan keluarlah isi tabel user. Selanjutnya bagaimanakah cara melakukan penghitungan dan looping sejumlah isi tabel user? Caranya adalah dengan for pada bashshell. Syntax for dasarnya adalah :

for x in $group; do $aksi; done

Sehingga jika terdapat variabel berisi : “satu dua tiga” dapat dioperasikan sebagai berikut:


group="satu dua tiga";for x in $group;do echo "item:" $x; done

Hasilnya adalah:

item: satu
item: dua
item: tiga

Untuk melibatkan perintah di dalamnya dapat diisikan seperti berikut:

for x in $(ls); do echo "item:" $x; done

Lantas bagaimana dengan hasil dari sql di bash shell?

for x in $(mysql -u root -p -e 'select * from pegawai.user'); do echo $x; done

Jawabannya adalah:

username
admin
bimo
dini

Selanjutnya tinggal mengarahkan pembuatan direktori, asalkan nama kolom tidak diikutkan:


for x in $(mysql -u root -e 'select username from pegawai.user'); do if [ "$x" != "username" ]; then mkdir $x; fi; done;

Lakukan perintah ls pada direktori anda, apakah sudah terbentuk?

2 thoughts on “Mainan For di bash Linux

  1. Mungkin lebih baik memakai sed untuk menghilangkan baris pertama mas, soale takutnya ada yang usernamenya “username” 😀

    for x in $(mysql -u root -e ‘select username from pegawai.user’ | sed 1d); do mkdir $x; done

Leave a Reply

Your email address will not be published. Required fields are marked *