3 Bash
3.8.5 Toán tu’’ for
Toán tu’’forlàm vieˆ
˙c có khác moˆ
˙t chút so vo´’ifortrong các ngôn ngu˜’laˆ
˙p trình thông thu’o`’ng. Thay vì ta˘ng hoa˘
˙c gia’m giá tri˙cu’a moˆ
˙t bieˆ´n soˆ´ nào d¯ó (lên hoa˘
˙c xuoˆ´ ng) moˆ
˙t d¯o’n vi
˙sau moˆ˜i vòng la˘
˙p, thì nó gán giá tri˙tieˆ´p theo trongdanh sách tu`’ d¯u’a sa˘˜ncho bieˆ´n d¯ó trong
moˆ˜i vòng la˘
˙p. Nói chung caˆ´u trúc có da
˙ng sau:
fornameinwordsdolistdone
Quy luaˆ
˙t xây du˙’ng danh sách leˆ˙nh (list) gioˆ´ ng trong toán tu’’if. Ví du
˙. Script sau ta˙o các taˆ
˙p tinfu1, fu2, vàfu3:
kênh giao tác
for a in 1 2 3 ; do touch fu$a
done
Có theˆ’ gõ ba dòng này trên moˆ
˙t dòng leˆ
˙nh, keˆ´t qua’ thu d¯u’o
˙’c tu’o’ng tu˙’ vo´’i script. Da˙ng toˆ’ng quát cu’a toán tu’’fornhu’ sau:
forname [inword; ]dolist ;done
D
¯ aˆ`u tiên cu˜ng xa’y ra su
˙’ khai trieˆ’n tu`’wordtheo quy luaˆ
˙t khai trieˆ’n bieˆ’u thu´’c (xem trên). Sau d¯ó bieˆ´nnamelaˆ`n lu’o
˙’t d¯u’o˙’c gán các giá tri˙thu d¯u’o
˙’c tu`’ su˙’ khai trieˆ`n này, và thu˙’c hieˆ˙n danh sách leˆ
˙nhlisttrong moˆ˜i laˆ`n nhu’ vaˆ
˙y. Neˆ´u không có "in word", thì danh sách leˆ ˙nh
list d¯u’o
˙’c thu˙’c hieˆ˙n moˆ
˙t laˆ`n cho moˆ˜i tham bie´ n viˆ
˙ trí d¯ã d¯u’a ra. Trên Linux có chu’o’ng trìnhseq, tieˆ´p nhaˆ
˙n hai soˆ´ nguyên làm tham soˆ´, và d¯u’a ra chuoˆ˜i taˆ´t ca’ các soˆ´ na˘`m giu˜’a hai soˆ´ này (coˆ
˙ng thêm ca’ chúng). Nho`’ câu leˆ
˙nh này có theˆ’ su’’ du
˙ngforcu’abashlàm vieˆ
˙c nhu’ toán tu’’fortrong các ngôn ngu˜’ laˆ
˙p trình thông thu’o`’ng. D¯ eˆ’ làm d¯u’o
˙’c d¯ieˆ`u này chı’ caˆ`n vieˆ´t vòng la˘
˙pfornhu’ sau:
kênh giao tác
for a in $( seq 1 6 ) ; do cat fu$a
done
Câu leˆ
˙nh (script) này d¯u’a ra màn hình noˆ
˙i dung cu’a 10 taˆ