O'zgaruvchilar, argumentlar va kiritish/chiqarish: read, echo, printf
10-sinfDevOps4-hafta ยท 10-darsBuyruqlarni faylga yozamiz, #!/bin/bash va chmod +x bilan ishga tushiramiz.
NOM="qiymat", $NOM, tirnoqlar va $(buyruq).
$1, $#, read, echo, printf.
Buyruqlar ketma-ketligi fayl ichida
Qismlar ustiga bosing.
Har safar 4 ta buyruqni qayta yozasiz. Bir qadam unutilsa, natija boshqacha.
Bir marta yozasiz, istalgancha ishga tushirasiz. Natija har safar bir xil.
apt update
apt install -y nginx
cp nginx.conf /etc/nginx/nginx.conf
systemctl restart nginxHar qatorni bosing yoki ustiga olib boring.
#!/bin/bash
# salom.sh - birinchi skript
ISM="Ali"
echo "Salom, $ISM!"
echo "Papka: $PWD"
echo "Foydalanuvchi: $USER"
$PWD va $USER shell o'zgaruvchilari (qo'llanma, 1.1-1.3 jadvallar).nano salom.sh bilan faylni yarating.
chmod +x salom.sh (yoki chmod 755 salom.sh).
./salom.sh: nuqta-slesh joriy papkani bildiradi.
Chiqishni ko'ring, kerak bo'lsa nano da tuzating.
$ ./salom.sh
bash: ./salom.sh: Permission denied
$ chmod +x salom.sh
$ ./salom.sh
Salom, Ali!
Papka: /home/ali
Foydalanuvchi: ali
$ bash salom.sh
Salom, Ali!x (execute) ruxsati yo'q. 1-haftadagi chmod ni eslang.Qiymatni nom bilan saqlaymiz
$ qutini ochadi.
ISM = "Ali"
echo "Salom, $ISM"
Natija: ISM: command not found
ISM="Ali"
echo "Salom, $ISM"
Natija: Salom, Ali
Faqat joriy shellda. NOM="Ali". Quyi jarayonga o'tmaydi.
Quyi jarayonlarga ham ochiq: export PORT=8080. Ko'rish: printenv, env.
Shellning o'zi yaratadi, katta harfda: USER, HOME, PWD.
ISM="Ali"
echo "Salom, $ISM"
# Salom, AliISM="Ali"
echo 'Salom, $ISM'
# Salom, $ISM
YIL=$(date +%Y)
echo "Yil: $YIL"
FAYLLAR=$(ls | wc -l)
Pastga bosing: ${} haqida.
${NOM}SON=5
echo "$SONta" # bo'sh: SONta degan o'zgaruvchi yo'q
echo "${SON}ta" # 5ta
Skript tashqaridan ma'lumot oladi
#!/bin/bash
echo "Skript nomi: $0"
echo "1-argument: $1"
echo "2-argument: $2"
echo "Argumentlar soni: $#"
echo "Hammasi: $@"
$ ./arg.sh Ali 16
Skript nomi: ./arg.sh
1-argument: Ali
2-argument: 16
Argumentlar soni: 2
Hammasi: Ali 16Matnni qatorga chiqaradi. echo -n qator o'tkazmaydi.
Formatli chiqish: %s matn, %d butun son, \n yangi qator.
Klaviaturadan (stdin) qiymat oladi. -p savol matni, -s yashirin.
#!/bin/bash
read -p "Ismingiz: " ISM
read -p "Yoshingiz: " YOSH
printf "%s, siz %d yoshdasiz\n" "$ISM" "$YOSH"
printf "Keyingi yil: %d\n" $((YOSH + 1))
$((...)) ichida arifmetik amal bajariladi. Keyingi darsda batafsil../hisob.sh 5 9 2 ishga tushirilganda $# nimaga teng?
$# argumentlar sonini beradi: 5, 9 va 2 - jami 3 ta. $0 esa skript nomi.NOM = "Ali": tenglik atrofida bo'sh joy.#! /bin/bsh kabi imloviy xato.chmod +x unutilgan: Permission denied.$NOM kutish.tanishuv.sh: ismni read bilan so'rab, salomlashing.$1 va $2 dagi ikki ismni printf bilan chiroyli chiqaring.info.sh: $USER, $HOME, $(date +%F) va $(ls | wc -l) ni bitta hisobotga yig'ing.Shebang, chmod +x, o'zgaruvchi, tirnoq, $(...), $1, read, printf.
profil.sh skriptini yozing (uyga-vazifa.md).
Shart operatorlari: if, test, [[ ]].