Trong bash shell đôi khi chúng ta cần so sánh các đối tượng với nhau. trong bài này mình sẽ hướng dẫn một số lệnh giúp các bạn tính toán trong bash shell

Tính toán số nguyên với lệnh expr

Lưu ý khi dùng cho phép so sánh hoặc nhân chúng ta cần thêm dấu “\” để không cho các tự * <> thành các ký tự đặc biệt và gây lỗi cho quá trình tính toán. Khi tiến hành so sánh với expr thì chúng ta chỉ nhận được kết quả là 0 hoặc 1 nghĩa là sai hoặc đúng với đúng là 1 còn sai sẽ là 0.

expr chỉ cung cấp cho chúng ta khả năng tính toán căn bản để nâng cao hơn với các phép tính như sin cos trong hình học thì chúng ta dùng awk

Tính toán với lệnh awk. awk mục đích chính là dùng để cắt dòng trong linux tuy nhiên mình phát hiện nó hoàn toàn dùng để tính toán được

Như vậy với khả năng mở rộng của awk cho chúng ta khả năng tính toán với nhiều dạng phức tạp hơn

một số thông số khi dùng với awk

  • int là lấy phần nguyên của một số có dạng thập phân
  • sin cos.. là các phép tính hình học
  • log (x) – logarit tự nhiên của x (miễn là x dương)
  • exp (x) – số mũ của x (e ^ x) hoặc lỗi nếu x nằm ngoài phạm vi
  • rand () – một số ngẫu nhiên – luôn nằm trong khoảng từ 0 đến 1
  • srand (x) – đặt điểm bắt đầu cho các số ngẫu nhiên

Dưới đây là một ví dụ về tính toán awk và so sánh trả về kết quả no hoặc yes

Nếu bạn chỉ cần lấy phần nguyên của một phép tính thập phân thì lệnh echo hoàn toàn làm được

chú ý lệnh echo sẽ không cho chúng ta kết quả thập phân chỉ ra cho chúng ta số nguyên của phép tính ví dụ (20+5)/2

với awk chúng ta có

Với echo chúng ta có

Tùy vào điều kiện và yêu cầu tính toán mà các bạn nên lựa chọn phương pháp cho phù hợp

Trong môi trường linux thường được mặc định python và perl nên chúng ta có thể dùng nó để tính toán

Tuy python có thể tính toán phức tạp nhưng để làm được điều đó thì bạn phải lập trình python như vậy vượt qua khôn khổ bài hướng dẫn này của mình là tính toán trong bash shell.

Một bài toán nữa là lấy nguyên số lẻ trong một dãy số chúng ta dùng đoạn code sau để lấy nguyên số lẻ từ 1 từ 1 tới 99

Leave a Reply

avatar
  Subscribe  
Notify of