if/else нөхцөл
Бодит script бол зөвхөн дарааллан гүйцэтгэгддэггүй — нөхцөл байдлаас хамаарч өөр өөр замаар явдаг. "Файл байгаа бол нэгийг хий, байхгүй бол нөгөөг хий" гэх мэт шийдвэр гаргахыг if/else нөхцөл хариуцдаг. Энэ бол аливаа програмчлалын хэлний хамгийн чухал бүтцүүдийн нэг.
if — Үндсэн бүтэц
Bash-н if нөхцөлийн бүтэц дараах байдлаар бичигдэнэ:
if [ нөхцөл ]; then
# нөхцөл үнэн үед ажиллана
fi
fi нь if-г эргээд уншсан үг бөгөөд блокийг хаадаг. Энгийн жишээ:
#!/bin/bash
read -p "Насаа оруулна уу: " age
if [ $age -ge 18 ]; then
echo "Та насанд хүрсэн."
fi
-ge нь "greater than or equal" буюу "их буюу тэнцүү" гэсэн утгатай тооцооллын оператор.
if/else — Өөр нөхцөл
Нөхцөл худал байх үед ажиллах кодыг else-ээр нэмнэ:
#!/bin/bash
read -p "Насаа оруулна уу: " age
if [ $age -ge 18 ]; then
echo "Та насанд хүрсэн байна."
else
echo "Та насанд хүрээгүй байна."
fi
elif — Олон нөхцөл
Хэд хэдэн нөхцөлийг дарааллан шалгахдаа elif (else if) ашиглана:
#!/bin/bash
read -p "Оноогоо оруулна уу (0-100): " score
if [ $score -ge 90 ]; then
echo "Үнэлгээ: A — Маш сайн!"
elif [ $score -ge 80 ]; then
echo "Үнэлгээ: B — Сайн"
elif [ $score -ge 70 ]; then
echo "Үнэлгээ: C — Дунд зэрэг"
elif [ $score -ge 60 ]; then
echo "Үнэлгээ: D — Хангалттай"
else
echo "Үнэлгээ: F — Хангалтгүй"
fi
Bash нөхцөлүүдийг дээрээс доош дарааллан шалгана — эхний үнэн нөхцөлийн блок гүйцэтгэгдээд fi-д шилжинэ.
Нэгтгэсэн нөхцөл (&&, ||)
Хэд хэдэн нөхцөлийг нэгтгэн шалгаж болно:
#!/bin/bash
read -p "Нэрээ оруулна уу: " name
read -p "Насаа оруулна уу: " age
# && — хоёулаа үнэн байх шаардлагатай
if [ -n "$name" ] && [ $age -ge 18 ]; then
echo "Бүртгэл амжилттай: $name ($age нас)"
fi
# || — аль нэг нь үнэн байвал хангалттай
if [ "$name" = "admin" ] || [ $age -gt 60 ]; then
echo "Тусгай эрх олгогдлоо."
fi
-n нь мөр хоосон биш эсэхийг шалгана, [ ] хашилтын хооронд зай заавал байх ёстойг анхаараарай.
Нөхцөл дотор нөхцөл (nested if)
#!/bin/bash
read -p "Нэвтрэх нэр: " username
read -s -p "Нууц үг: " password
echo ""
if [ "$username" = "admin" ]; then
if [ "$password" = "1234" ]; then
echo "Нэвтрэлт амжилттай!"
else
echo "Нууц үг буруу."
fi
else
echo "Хэрэглэгч олдсонгүй."
fi
Нэг if блок доторт өөр if байрлуулж болно — гэхдээ гурваас дээш давхарлах нь кодыг уншихад хэцүү болгодог тул болгоомжтой байгаарай.
Дараагийн хичээлд:
test оператор ба [[ ]] — нөхцөл шалгах бүрэн хэрэгслүүдийг тоо, мөр, файл гурван төрлөөр нарийвчлан судална.