Bash / if/else нөхцөл

if/else нөхцөл

Бодит script бол зөвхөн дарааллан гүйцэтгэгддэггүй — нөхцөл байдлаас хамаарч өөр өөр замаар явдаг. "Файл байгаа бол нэгийг хий, байхгүй бол нөгөөг хий" гэх мэт шийдвэр гаргахыг if/else нөхцөл хариуцдаг. Энэ бол аливаа програмчлалын хэлний хамгийн чухал бүтцүүдийн нэг.

if — Үндсэн бүтэц

Bash-н if нөхцөлийн бүтэц дараах байдлаар бичигдэнэ:

bash
if [ нөхцөл ]; then
    # нөхцөл үнэн үед ажиллана
fi

fi нь if-г эргээд уншсан үг бөгөөд блокийг хаадаг. Энгийн жишээ:

bash
#!/bin/bash

read -p "Насаа оруулна уу: " age

if [ $age -ge 18 ]; then
    echo "Та насанд хүрсэн."
fi

-ge нь "greater than or equal" буюу "их буюу тэнцүү" гэсэн утгатай тооцооллын оператор.

if/else — Өөр нөхцөл

Нөхцөл худал байх үед ажиллах кодыг else-ээр нэмнэ:

bash
#!/bin/bash

read -p "Насаа оруулна уу: " age

if [ $age -ge 18 ]; then
    echo "Та насанд хүрсэн байна."
else
    echo "Та насанд хүрээгүй байна."
fi

elif — Олон нөхцөл

Хэд хэдэн нөхцөлийг дарааллан шалгахдаа elif (else if) ашиглана:

bash
#!/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-д шилжинэ.

Нэгтгэсэн нөхцөл (&&, ||)

Хэд хэдэн нөхцөлийг нэгтгэн шалгаж болно:

bash
#!/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)

bash
#!/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 оператор ба [[ ]] — нөхцөл шалгах бүрэн хэрэгслүүдийг тоо, мөр, файл гурван төрлөөр нарийвчлан судална.