for давталт
Давтамжтай ажлыг автоматжуулах — энэ бол Bash script-н хамгийн хүчтэй талуудын нэг. 100 файлыг нэг нэгээр гараар боловсруулахын оронд for давталт ашиглан нэг script-ээр бүгдийг шийдэж болно. for бол Bash-н хамгийн өргөн ашиглагддаг бүтцүүдийн нэг.
for — Үндсэн бүтэц
for хувьсагч in жагсаалт; do
# давтагдах код
done
do блок дотрох код нь жагсаалтын элемент бүрт нэг удаа гүйцэтгэгдэнэ. Хамгийн энгийн жишээ:
#!/bin/bash
for name in Болд Бат Дорж Ану; do
echo "Сайн уу, $name!"
done
Гаралт:
Сайн уу, Болд!
Сайн уу, Бат!
Сайн уу, Дорж!
Сайн уу, Ану!
Тооны мужаар давтах
Тоон мужийг {эхлэл..төгсгөл} хэлбэрээр зааж болно:
#!/bin/bash
# 1-ээс 5 хүртэл
for i in {1..5}; do
echo "Тоо: $i"
done
# 0-ээс 10 хүртэл 2-оор алгасах
for i in {0..10..2}; do
echo "$i"
done
# Буцааж тоолох
for i in {5..1}; do
echo "Бэлэн болох: $i..."
done
echo "Явлаа!"
{эхлэл..төгсгөл..алхам} хэлбэрт гурав дахь утга алхамыг заана.
C-хэлбэрийн for давталт
Бусад програмчлалын хэлтэй адил хэлбэрийг Bash мөн дэмждэг:
#!/bin/bash
# for (( эхлэл ; нөхцөл ; алхам ))
for (( i = 1; i <= 5; i++ )); do
echo "Давталт $i"
done
# Буцааж тоолох
for (( i = 10; i >= 1; i-- )); do
printf "Хоцрол: %2d\n" $i
done
(( )) доторх арифметик нь $ тэмдэгтгүйгээр шууд ажилладаг.
Файлуудыг давтан боловсруулах
for давталтын хамгийн нийтлэг хэрэглээ бол олон файлыг нэг дор боловсруулах:
#!/bin/bash
# Одоогийн директорын бүх .txt файлыг боловсруул
for file in *.txt; do
echo "Файл олдлоо: $file"
wc -l "$file" # Мөрийн тоог тоол
done
# Бүх script файлд гүйцэтгэх эрх олго
for script in scripts/*.sh; do
chmod +x "$script"
echo "$script — эрх олголоо"
done
*.txt glob загвар тухайн директорт тохирох бүх файлыг олж, давталтад өгнө.
Командын гаралтыг давтах
$(команд) ашиглан командын гаралтыг давталтад ашиглаж болно:
#!/bin/bash
# ls-н гаралтыг давтах
for item in $(ls /etc/*.conf); do
echo "Тохиргооны файл: $item"
done
# Мөрүүдийг файлаас уншиж давтах
for line in $(cat servers.txt); do
echo "Серверт холбогдож байна: $line"
ping -c 1 "$line" > /dev/null && echo " ✓ Хүртээмжтэй" || echo " ✗ Хүртээмжгүй"
done
break ба continue
Давталтын явцыг удирдах хоёр тусгай команд бий:
#!/bin/bash
# break — давталтыг бүрмөсөн зогсооно
for i in {1..10}; do
if [ $i -eq 5 ]; then
echo "5 дахь давталтад зогслоо"
break
fi
echo "Давталт: $i"
done
# continue — тухайн давталтыг алгасан дараагийнх руу шилжинэ
for i in {1..10}; do
if (( i % 2 == 0 )); then
continue # Тэгш тоог алгасна
fi
echo "Сондгой тоо: $i"
done
Дараагийн хичээлд:
while ба until давталт — нөхцөл үнэн байх хүртэл буюу үнэн болох хүртэл давтах хоёр бүтцийг сурна.