Câu Lệnh Điều Kiện Với Bash Shell - MTD SEC

MTD SEC

Chia Sẻ Để Thành Công

Home Top Ad

Post Top Ad

Thứ Hai, 18 tháng 3, 2019

Câu Lệnh Điều Kiện Với Bash Shell


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

Post Top Ad