Bash / Хувьсагч үндэс

Хувьсагч үндэс

Хувьсагч (variable) бол өгөгдлийг түр хадгалах нэртэй сав юм. Нэг удаа утга хадгалаад дараа дахин ашигладаг. Bash дахь хувьсагч нь бусад програмчлалын хэлүүдийнхтэй адил зарчмаар ажиллах боловч бичих дүрмийн хувьд өвөрмөц онцлогтой.

Хувьсагч тодорхойлох

Хувьсагчийг нэр=утга хэлбэрээр тодорхойлно. Чухал: = тэмдгийн хоёр талд зай байж болохгүй — энэ бол Bash-н хамгийн их алдаа гаргадаг хэсэг.

bash
name="Болд"
age=25
city="Улаанбаатар"
is_developer=true

Зай байвал Bash алдаа гаргана:

bash
name = "Болд"   # БУРУУ — зай байж болохгүй
name="Болд"     # ЗӨВЛӨМЖ — ийнхүү бичнэ

Хувьсагчийн утгыг ашиглах

Хувьсагчийн утгыг уншихдаа нэрийн өмнө $ тавина:

bash
name="Болд"
echo $name          # Болд
echo "Сайн уу, $name!"   # Сайн уу, Болд!

Хувьсагчийн нэрийг текстэд найдвартай оруулахын тулд ${} хэлбэрийг ашиглах нь зөв дадал:

bash
language="Bash"
echo "Би ${language} сурч байна"     # Би Bash сурч байна
echo "${language}Script"             # BashScript — нэрийн хилийг тодруулна

Хашилтын ялгаа

Bash дотор хашилтын төрөл чухал — хувьсагч ажиллах эсэхийг шийддэг:

bash
name="Болд"

echo "Сайн уу, $name"    # Хувьсагч боловсруулагдана → Сайн уу, Болд
echo 'Сайн уу, $name'    # Хувьсагч боловсруулагдахгүй → Сайн уу, $name

Давхар хашилт " — хувьсагч ба тусгай тэмдэгтүүдийг боловсруулна. Нэг хашилт ' — бүгдийг текст хэлбэрээр шууд харуулна.

Тооцооллын үр дүн хадгалах

Командын гаралтыг хувьсагчид хадгалахдаа $() (command substitution) ашиглана:

bash
today=$(date)
echo "Өнөөдөр: $today"

current_dir=$(pwd)
echo "Одоогийн директор: $current_dir"

file_count=$(ls | wc -l)
echo "Файлын тоо: $file_count"

Тусгай хувьсагчид

Bash дотор урьдчилан тодорхойлогдсон тусгай хувьсагчид байдаг:

bash
echo $HOME      # Home директорын зам (/home/username)
echo $USER      # Нэвтэрсэн хэрэглэгчийн нэр
echo $PATH      # Команд хайдаг директоруудын жагсаалт
echo $PWD       # Одоогийн директорын зам (pwd шиг)
echo $SHELL     # Ашиглаж буй shell-н зам
echo $$         # Одоогийн процессийн PID
echo $?         # Өмнөх командын exit code (0 = амжилттай)

Эдгээрийг echo-гоор харвал систем ба орчны тухай маш их мэдэлэл авч болно.

Хувьсагчийг устгах

bash
name="Болд"
echo $name        # Болд
unset name
echo $name        # (хоосон — хувьсагч устсан)

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

echo ба printf командуудыг гүнзгий судална — текстийг янз бүрийн хэлбэрээр, өнгөтэйгөөр дэлгэцэнд хэвлэх аргыг сурна.