Bash / Хэрэглэгчийн оролт (read)

Хэрэглэгчийн оролт (read)

Одоог хүртэл бичсэн script-нүүд бүгд урьдчилан тогтоосон утгуудтай ажиллаж байлаа. Харин бодит ашиглалтад script хэрэглэгчтэй харилцаж, оролт авах шаардлагатай болдог. read команд нь хэрэглэгч гараас бичсэн текстийг хувьсагчид хадгалдаг — энгийн боловч маш хүчирхэг хэрэгсэл.

read — Оролт авах

read нь хэрэглэгч Enter дарах хүртэл гараас оруулсан текстийг хүлээн авч, хувьсагчид хадгалдаг:

bash
#!/bin/bash

echo "Нэрээ оруулна уу:"
read name
echo "Сайн уу, $name!"

Ажиллуулбал:

код
Нэрээ оруулна уу:
Болд
Сайн уу, Болд!

read дараа хувьсагчийн нэрийг бичнэ. Нэр заахгүй бол оролт $REPLY гэсэн анхдагч хувьсагчид хадгалагдана.

Ашигтай сонголтууд

read командын хэд хэдэн сонголт байдаг — эдгээр нь script-г илүү найрсаг болгодог:

bash
# -p: prompt текстийг шууд харуулна (тусдаа echo хэрэггүй)
read -p "Хотоо оруулна уу: " city
echo "Та $city хотод амьдардаг."

# -s: нууцаар оруулна (нууц үг гэх мэт — дэлгэцэнд харагдахгүй)
read -s -p "Нууц үгээ оруулна уу: " password
echo ""   # -s нь шинэ мөр нэмдэггүй тул гараар нэмнэ
echo "Нууц үг хүлээн авлаа."

# -t: хүлээх хугацаа (секундаар)
read -t 10 -p "10 секундын дотор нэрээ оруулна уу: " name

-p сонголт хамгийн өргөн ашиглагддаг — echo ба read-г нэг мөрт нийлүүлдэг тул код нь цэвэр харагдана.

Нэг дор хэд хэдэн хувьсагч авах

read командын дараа хэд хэдэн хувьсагчийн нэр бичвэл оролтыг зайгаар хуваан тус тусд нь хадгалдаг:

bash
#!/bin/bash

read -p "Нэр ба насаа оруулна уу: " name age
echo "Нэр: $name"
echo "Нас: $age"

Хэрэглэгч Болд 25 гэж бичвэл name=Болд, age=25 болно. Хувьсагчаас илүү үг байвал сүүлийн хувьсагч үлдсэн бүгдийг авна.

Оролтыг шалгах

Хэрэглэгч хоосон оролт өгөх тохиолдол байдаг — script-д анхааралтай байх хэрэгтэй:

bash
#!/bin/bash

read -p "Нэрээ оруулна уу: " name

if [ -z "$name" ]; then
    echo "Нэр хоосон байна. Гарлаа."
    exit 1
fi

echo "Сайн уу, $name!"

-z нь мөр хоосон эсэхийг шалгана — if ба -z-г дараагийн хичээлүүдэд дэлгэрэнгүй судлах болно.

Жишээ: Энгийн тооцоолуур

read-г ашиглан хэрэглэгчтэй харилцдаг жижиг script:

bash
#!/bin/bash

echo "=== Энгийн тооцоолуур ==="
read -p "Эхний тоо: " num1
read -p "Хоёрдугаар тоо: " num2

sum=$((num1 + num2))
diff=$((num1 - num2))
product=$((num1 * num2))

echo "Нийлбэр:  $sum"
echo "Зөрүү:   $diff"
echo "Үржвэр:  $product"

$(( )) нь тооцооллын хашилт — дараагийн хичээлүүдэд дэлгэрэнгүй авч үзнэ.

Дараагийн хичээлд:

if/else нөхцөл — хэрэглэгчийн оролт болон бусад утгыг шалган, script-н явцыг удирдах аргыг сурна.