Bài thực hành buổi 3
LẬP TRÌNH CẤU TRÚC VÀ
VÒNG LẶP TRONG SHELL
Nội dung thực hành
③ Lệnh if
③ Lệnh for
③ Lệnh while
③ Lệnh case
Trước khi tìm hiểu về các cấu trúc lập trình và vòng lặp trong shell của Linux, chúng ta đề cập một chút về kiểu boolean trong shell.
Trong shell của Linux giá trị True và False được thể hiện tương ứng bằng 2 giá trị không (0 – zero) và khác không (non-zero).
Ví dụ:
5 > 2 ⮴ 0 (True)
5 < 2 ⮴ 1 (False)
1. Câu lệnh if
Câu lệnh if được dùng để thiết lặp quyết định (lệnh rẽ nhánh) trong shell script. Cú pháp:
if condition
then
command1
...
...
fi
Lệnh command1 được thực thi khi điều kiện condition là True (0), ngược lại lệnh tiếp sau lệnh if (sau từ khóa fi) được thực hiện.
Ví dụ:
Ths. Phan Thượng Cang - Ths. Bùi Quốc Thái Trang 27
Tài Liệu Thực Hành Hệ Điều Hành – Bộ môn HTMT&TT
Lưu đoạn script trên vời tên file là rmif, thực hiên chmod và thực thi. Kết quả thực thi như sau:
Lần đầu thực thi rmif với tham số aaaa sẽ nhân được một thông báo lỗi “No such file or directory”. Lần thứ 2 thực hiện với tham số a thì nhận được một thông báo “a is deleted successfully”.
Như vậy đoạn script trên thực hiện xóa file với tên file được truyền vào từ tham số của script. Nếu tên file không tồn tại thì lệnh rm không thành công hay nói cách khác lệnh sẽ trả về exit status là khác không có nghĩa la False. Ngược lại exit status bằng không (0) có nghĩa là True, khi đó lệnh echo được in ra màn hình.
2. Lệnh test hoặc [expr]
Lệnh test hoặc [expr] dùng để kiểm tra một biểu thức logic là True hay False. Nếu biểu thức có giá True lệnh test hoặc [expr] sẽ trả về giá trị 0, ngược lại trả về giá trị khác không.
Khảo sát đoạn script sau:
if test $1 -gt 0
then
echo "$1 is positive number"
fi
'Lệnh test và [expr] hoạt động với các loại dữ liệu như: Integer, file và chuỗi ký tự. Dưới đây là các phép toán được dùng trong lệnh test hoặc [expr] Các phép toán so sánh
Phép toán so sánh chuỗi
Sử dụng lệnh test hoặc [expr] với file và thư mục
Phép toán logic