if/elif/else, test, [[ ]] va arifmetik amallar
10-sinfDevOps4-hafta ยท 11-darsHar buyruq 0 (muvaffaqiyat) yoki boshqa son qaytaradi: $?.
Skript qaror qabul qiladi: test, [ ], [[ ]].
$(( )) va (( )): qo'shish, bo'lish, qoldiq.
apt update && apt upgrade -y, ikkinchi buyruq birinchisi muvaffaqiyatli bo'lsa ishlaydi.Shart aslida nimani tekshiradi?
Qismlar ustiga bosing.
$ ls /tmp
$ echo $?
0
$ ls /yoq_papka
ls: /yoq_papka: No such file or directory
$ echo $?
1$? faqat oxirgi buyruq kodini beradi. Keyingi buyruqdan keyin u o'zgaradi.Ustiga bosing yoki olib boring.
-eq -ne -lt -le -gt -ge
teng, teng emas, kichik, kichik/teng, katta, katta/teng
= (==) != -z -n-z bo'sh, -n bo'sh emas
-e -f -d -r -w -x
bor, fayl, papka, o'qish, yozish, bajarish
[ "$S" -gt 10 ] && echo "katta"
[ "$S" -eq 0 ] && echo "nol"[ "$ISM" = "Ali" ] && echo "salom, Ali"
[ -z "$X" ] && echo "X bo'sh"[ -f /etc/hosts ] && echo "fayl bor"
[ -d /tmp ] && echo "papka bor"Qaysi yozuv to'g'ri?
[ alohida buyruq, shuning uchun uning atrofida bo'sh joy shart.Skript yo'l tanlaydi
Shartlar yuqoridan pastga tekshiriladi.
#!/bin/bash
read -p "Son: " S
if [ "$S" -lt 0 ]; then
echo "manfiy"
elif [ "$S" -eq 0 ]; then
echo "nol"
else
echo "musbat"
fi
then alohida qatorda yoki ; dan keyin. Blok fi bilan yopiladi.
A=""
if [ $A -eq 5 ]; then
echo "besh"
fi
Natija: [: -eq: unary operator expected
A=""
if [ "$A" -eq 5 ]; then
echo "besh"
fi
Tirnoq bilan xato kamayadi; [[ ]] da esa tirnoq shart emas.
-a, -o o'rniga ikkita qavs.&&, || ichida ishlaydi, naqsh: == *.txt.Pastga bosing: misol.
F="hisobot.txt"
[[ $F == *.txt ]] && echo "matn fayl"
[[ $F == a* || $F == h* ]] && echo "a yoki h"
Ustiga bosing.
mkdir backup2-marta ishga tushsa: File exists xatosi.[ -d backup ] || mkdir backupNecha marta ishga tushirsangiz ham natija bir xil.Bash da hisob-kitob
Natijani bosing.
A=17
B=5
echo $((A + B)) # 22
echo $((A / B)) # 3
echo $((A % B)) # 2
(( A % 2 == 0 )) && echo juft || echo toq
$(( )) ichida o'zgaruvchiga $ shart emas. (( )) shartda ishlatiladi.[$A -eq 5]: qavs atrofida bo'sh joy yo'q.[ $A -eq 5 ] da A bo'sh: tirnoq unutilgan.= yoki matn uchun -eq.fi unutilgan yoki then yo'q.$((7/2)) dan 3.5 kutish.echo $((17 % 5)) nima chiqaradi?
% bo'lishdan qoldiq: 17 = 3*5 + 2, qoldiq 2.juft.sh: son kiriting, juft yoki toqligini ayting.tekshir.sh: argument fayl, papka yoki yo'qligini aytsin; argument bo'lmasa yordam matni.baho.sh: ball bo'yicha 5/4/3/2 baho; 0-100 dan tashqarisi xato.$?, [ ], [[ ]], if/elif/else, &&, ||, $(( )).
tekshir.sh: fayl turi va ruxsatlar (uyga-vazifa.md).
Sikllar: for, while, until.