Trong phần này mình sẽ nói về câu lệnh điều kiện của bash shell thường gặp trong lập trình bash shell.
Thông thường như mọi ngôn ngữ lập trình thì bash shell cũng có câu lệnh if then bình thường
ví dụ đoạn code check dung lượng ổ cứng như dưới đây
Disk="$(df -h | grep dev/vda | awk {'print $5'} | sed 's/%//')"
if [[ "$Disk" == 100 ]]; then
echo "thang ngu da bi day o cung"
fi
chúng ta đang dùng lệnh này để so sánh với 1 giá trị để rồi chúng ra làm gì đó. cấu trúc câu lệnh if then như sau
if điều kiện 1 nếu thoải mãn thì chạy qua lệnh then còn không thì qua else hoặc elif để check lại hoặc đơn giản là thoát code
để kiểm tra nhiều điều kiện chúng ta có elif
my=1
if [ $my = 0 ]
then
echo "$my la 0"
elif [ $my = 1 ]
echo "$my la 1"
else
echo "khong xac dinh $my"
Trong ví dụ trên thì kết quả trả về là
1 la 1
chúng ta có thể thấy câu lệnh elif là câu lệnh mở rộng điều kiện khi điều kiện trên không đúng hoặc sai.
Tuy nhiên việc ứng dụng if then đôi khi không phải là tối ưu nhất chúng ta có còn một cách nữa để check điều kiện so sánh... khá gắn gọn đó là dùng dấu "||"
2 dấu || cũng là dạng điều kiện để câu lệnh có thể chạy cấu trúc của nó
command1 || command2
Lệnh thứ 2 vế đằng sau chỉ được thực hiện khi lệnh 1 đằng trước lỗi hoặc trả về kết quả rỗng. nó cũng như câu lệnh if then khi điều kiện không được thỏa mãn nó sẽ chạy lệnh bên trong else
ví dụ chạy đoạn mã sau để kiểm tra xem mình có phải root hay không.
test $(id -u) -eq 0 && echo "Root user can run this script." || echo "Use sudo or su to become a root user."
Nếu mình đang dùng user root thì kết quả.
Root user can run this script.
Nếu mình dùng user khác root thì kết quả nhận lại
Use sudo or su to become a root user.
Ứng dụng của lệnh này rõ nhất khi chúng ta viết bash shell mà đòi hỏi quyền root chúng ta có thể dùng lệnh sau đây nếu không phải root thì sẽ thoát cài đặt
test $(id -u) -eq 0 || exit 1;
so sánh đạnh code này với khi dùng if
test $(id -u)
if [ $test = 0 ]
then
... lenh cai dat
else
exit 1;
chúng ta thấy sự tối ưu của nó đi rất nhiều lần. tuy nhiên nhược điểm của "||" là lập trình khó hơn if then và chúng ta hay 'quên'. chúng ta có thể chạy nhiều lệnh với "||" nếu lệnh trước trả về rỗng hoặc sai thì sẽ chạy lệnh phía sau tuần tự từ trái qua phải
command1 || command2 || command3 || command4
Tùy vào hoàn cảnh mà các bạn nên áp dụng cái nào cho hợp lý.
Không có nhận xét nào:
Đăng nhận xét