Хэрэглэгчийн оролт (read)
Одоог хүртэл бичсэн script-нүүд бүгд урьдчилан тогтоосон утгуудтай ажиллаж байлаа. Харин бодит ашиглалтад script хэрэглэгчтэй харилцаж, оролт авах шаардлагатай болдог. read команд нь хэрэглэгч гараас бичсэн текстийг хувьсагчид хадгалдаг — энгийн боловч маш хүчирхэг хэрэгсэл.
read — Оролт авах
read нь хэрэглэгч Enter дарах хүртэл гараас оруулсан текстийг хүлээн авч, хувьсагчид хадгалдаг:
#!/bin/bash
echo "Нэрээ оруулна уу:"
read name
echo "Сайн уу, $name!"
Ажиллуулбал:
Нэрээ оруулна уу:
Болд
Сайн уу, Болд!
read дараа хувьсагчийн нэрийг бичнэ. Нэр заахгүй бол оролт $REPLY гэсэн анхдагч хувьсагчид хадгалагдана.
Ашигтай сонголтууд
read командын хэд хэдэн сонголт байдаг — эдгээр нь script-г илүү найрсаг болгодог:
# -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 командын дараа хэд хэдэн хувьсагчийн нэр бичвэл оролтыг зайгаар хуваан тус тусд нь хадгалдаг:
#!/bin/bash
read -p "Нэр ба насаа оруулна уу: " name age
echo "Нэр: $name"
echo "Нас: $age"
Хэрэглэгч Болд 25 гэж бичвэл name=Болд, age=25 болно. Хувьсагчаас илүү үг байвал сүүлийн хувьсагч үлдсэн бүгдийг авна.
Оролтыг шалгах
Хэрэглэгч хоосон оролт өгөх тохиолдол байдаг — script-д анхааралтай байх хэрэгтэй:
#!/bin/bash
read -p "Нэрээ оруулна уу: " name
if [ -z "$name" ]; then
echo "Нэр хоосон байна. Гарлаа."
exit 1
fi
echo "Сайн уу, $name!"
-z нь мөр хоосон эсэхийг шалгана — if ба -z-г дараагийн хичээлүүдэд дэлгэрэнгүй судлах болно.
Жишээ: Энгийн тооцоолуур
read-г ашиглан хэрэглэгчтэй харилцдаг жижиг script:
#!/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-н явцыг удирдах аргыг сурна.