Lập trình Shell trên linux

1
2022

Trong Linux để đơn giản hóa công việc, chúng ta có thể soạn thảo các kịch bản (shell script), tiện ích phục vụ công việc giúp cho việc quản trị hệ thống mạng trở nên nhẹ nhàng hơn.

1. Shell script

  • Dùng soạn thảo các kịch bản, tiện ích phục vụ công việc quản trị hệ thống mạng.
  • Nội dung shell script
– Các tập lệnh (cp, ls, …, >, <, |, …)
– Các biến
– Các lệnh điều khiển (if, case)
– Vòng lặp (for, while)

2. Sử dụng biến

– Biến môi trường: do hệ thống tạo ra, thiết lặp môi trường làm việc cho môi trường (vd: những lệnh hệ thống, dấu nhắc, …)

– Xem biến môi trường

#env

– Thiết lập biến môi trường

#export ten=”oktot”
#echo $ten                  //xem lại biến vừa thiết lặp
#echo $PATH             //xem đường dẫn của biến
#unset ten                   //xóa biến

– Biến do người dùng tạo ra:
            Không cần khai báo biến
            Phân biệt chữ in và chữ thường
            Gán giá trị cho biến

 #export ten=”oktot”
#tuoi=20
#echo “Chao $ten, tuoi cua bạn là: $tuoi ”
#echo ‘Chao $ten, tuoi cua bạn là: $tuoi ‘

echo: in ra màn hình thông báo

“  ”: in có xử lý biến, lệnh

        ‘  ’: in nguyên văn

#echo “clear chao $ten, tuoi cua ban la: $tuoi”
#echo “`clear` chao $ten, tuoi cua ban la: $tuoi”

Tham số:

-n: in không xuống dòng
-e: xử lý ký tự đặc biệt
\t: tab
\n: xuống dòng
\r: về đầu dòng
\v: tab đứng
– Ví dụ

#echo –e “`clear` \n\n\t\t chao $ten, tuoi cua ban la: $tuoi”

3. Nhập giá trị cho biến

read: nhập giá trị cho biến từ bàn phím

– Ví dụ

#read ten ->    Nhập vào giá trị của biến tên

#echo $ten

#read –p “Ten ban la: ” ten
#echo $ten
#read -n1 -p “Ban muon tiep tuc khong (Y/N): ” ans

4. Biểu thức tính toán

#expr 10 + 3
#expr 10 – 3
#expr 10 \* 3
#expr 10 / 3
#expr 10 % 3

– Ví dụ: viết một đoạn chương trình nhập vào 2 số, in ra tổng, hiệu, tích, thương
#vi vd1

clear
read -p “Nhap vao so a: ” a
read -p “Nhap vao so b: ” b
tong=`expr $a + $b`
echo -e “\t Tong: $a + $b = $tong”
hieu=`expr $a – $b`
echo -e “\t Hieu: $a – $b = $hieu”
tich=`expr $a \* $b`
echo -e “\t Tich: $a * $b = $tich”
thuong=`expr $a / $b`
echo -e “\t Thuong: $a \ $b = $thuong”
 #sh vd1           //hoặc #bash vd1

5. Logon script
– /etc/profile: là file chứa script logon thực thi cho tất cà user trên hệ thống
– Tạo user nv1/123, nv2/123
– Ví dụ:

#vi /etc/profile

Cuối file thêm 1 dòng có nội dung mc

login nv1, nv2             //khảo sát
#date –s “12/2/2016 8:30”
#date +%d                   //trả ra ngay trong tháng
#date +%m
#date +%y
#echo “Hom nay ngay `date +%d` thang `date +%m` nam `date +%y`”
#vi /etc/profile
          Cuối file thêm 1 dòng có nội dung
echo “Hom nay ngay `date +%d` thang `date +%m` nam `date +%y`”
login nv1, nv2             //khảo sát

6. Soạn thảo banner
Tạo banner hiển thị khi user đăng nhập vào hệ thống
– Tạo banner

#vi /etc/banner
echo “***************************************”
echo –e “\n\t\t website oktot”
echo –e “\t\t Dia chỉ: TpHCM”
echo –e “\t\t Tieu chi: Free, chia se kien thuc cho moi nguoi”
echo –e “\t\t Ban dang login bang user `who` ”

– Cho banner hoạt động khi user login

#vi /etc/banner
Shitf+g: cuối file
o: thêm dòng
sh /etc/banner
esc+: x
– Login nv1 //khảo sát

7. Phát biểu if

Dạng 1
if điều kiện
then lệnh
fi

Dạng 2
if điều kiện
then lệnh
else lệnh
fi

Phép toán so sánh số:

n1 –eq n2        (n1=n2)           n1 –gt n2         (n1>n2)
n1 –ge n2        (n1>=n2)         n1 –le n2         (n1<=n2)
n1 –lt n2          (n1<n2)           n1 –ne n2        (n1≠n2)

VD: nhập 3 số, in ra số lớn nhất

#vi lab1

clear
read -p “Nhap so a: ” a
read -p “Nhap so b: ” b
read -p “Nhap so c: ” c
max=$a
if [ $max -lt $b ]
then max=$b
fi
if [ $max – lt $c ]
then max=$c
fi
echo “So lon nhat la: $max”

#sh lab1
Phép so sánh chuỗi

str1 = str2                    str1 > str2
str1 >= str2                  str1 <= str2
str1 < str2                    str1 <> str2
str1 != str2

-n str1: đúng nếu độ dài str1>0
-z str1: đúng nếu độ dài str1=0

VD: nhập tên phần mềm, kiểm tra phần mềm đó được cài chưa

Nếu chưa: hỏi có muốn cài không
Nếu rồi: hỏi có muốn chạy không
#vi lab2

clear
read –p “Nhap ten phan mem: ” pmem
if [ -z `rpm –qa $pmem` ]
then read –n1 –p “$pmem chua duoc cai, ban co muon cai khong (Y/N): ” ans
if [ $ans  = “Y” ] || [ $ans = “y” ]
then
yum install $pmem
echo “$pmem da duoc cai thanh cong”
fi
else
read –n1 –p “$pmem da duoc cai dat, ban muon chay không (Y/N): ” ans
if [ $ans  = “Y” ] || [ $ans = “y” ]
then $pmem
fi
fi

1 COMMENT

This site uses Akismet to reduce spam. Learn how your comment data is processed.