Bash 'if else' Tuyên bố: Hướng dẫn và Ví dụ

Sử dụng câu lệnh if… else trong Bash để thực thi mã có điều kiện.

Bash (Bourne Again Shell) là một lời nhắc lệnh shell và ngôn ngữ kịch bản trong hệ điều hành GNU / Linux. Nó là trình bao mặc định cho hầu hết các bản phân phối Linux.

Các câu lệnh điều kiện rất quan trọng trong bất kỳ ngôn ngữ lập trình nào, được biên dịch cũng như tập lệnh. Họ cho phép người dùng thực thi một đoạn mã dựa trên một điều kiện được xác định trước, đây là một trong những nền tảng của logic lập trình. Trong bài viết này, chúng ta sẽ học cách sử dụng nếu khác câu lệnh điều kiện trong Bash.

Giới thiệu

Các nếu khác câu lệnh trong Bash cho phép người dùng thao tác dòng mã dựa trên các điều kiện. Người dùng có thể chỉ định các khối mã riêng biệt sẽ được thực thi, chỉ một trong số đó cuối cùng sẽ được thực thi trong thời gian chạy, dựa trên điều kiện tương ứng được thỏa mãn.

Lưu ý rằng, nhiều hơn hai điều kiện có thể được chỉ định, mà elif câu lệnh có thể được sử dụng. Người dùng có thể đưa ra bất kỳ số điều kiện nào bằng cách sử dụng elifvà cuối cùng là một điều kiện mặc định bằng cách sử dụng khác khối. Hãy xem thêm về điều này trong cú pháp và ví dụ bên dưới.

Cú pháp chung

Cú pháp chung cho nếu khác tuyên bố trong Bash là:

nếu sau đó  khác  fi

Đây, nếu thỏa mãn, tức là nếu nó trả về 0 (thành công), thì khối mã 1 được thực thi. Nếu điều kiện không trả về 0, tức là nó trả về trạng thái thất bại, thì khối mã 2 được thực thi. Các nếu khác khối kết thúc bằng một fi bản tường trình.

Đối với nhiều khối tương ứng với nhiều điều kiện,elif Được sử dụng:

nếu sau đó  elif sau đó  elif sau đó  ... ... khác  fi

Tại đây, các điều kiện được kiểm tra theo thứ tự và khối mã của điều kiện đầu tiên trả về trạng thái 0 (thành công) được thực thi. Ví dụ. nếu như trả về trạng thái khác 0 (thất bại), sau đó được kiểm tra. Nếu như trả về trạng thái 0, được thực thi. Sau đó, các điều kiện khác không được kiểm tra và quá trình thực thi mã tiếp tục đối với mã sau fi bản tường trình.

Nếu không có điều kiện nào trả về trạng thái 0, trong khối khác được thực thi. Lưu ý rằng khối khác là tùy chọn. Nếu không có điều kiện nào được thỏa mãn, cũng như không khác khối được chỉ định, không có khối mã điều kiện nào sẽ chạy và quá trình thực thi mã sẽ tiếp tục đối với mã sau fi , như được hiển thị trong sơ đồ bên dưới.

Lưu ý rằng sau đó câu lệnh chỉ được sử dụng sau nếu nhưelif câu lệnh và không bắt buộc sau khác bản tường trình.

Các ví dụ

Để thực thi một khối mã nếu một biến có giá trị cụ thể:

x = 0 if [$ x -eq 0] then echo "Giá trị của X là 0" else echo "Giá trị của X không phải là 0" fi

Để kiểm tra nhiều giá trị:

x = 2 if [$ x -eq 0] then echo "Giá trị của X là 0" elif [$ x -eq 1] then echo "Giá trị của X là 1" elif [$ x -eq 2] then echo "Giá trị của X là 2 "else echo" Giá trị của X không phải là 0 "fi

Các điều kiện có thể là bất kỳ lệnh Linux nào. Khối mã tương ứng sẽ thực thi nếu lệnh chạy thành công.

if npm -v then echo "NPM present in system" else sudo apt install npm fi

Trong ví dụ trên, kể từ npm không được cài đặt trong hệ thống, lệnh npm -v trả về trạng thái khác 0. Do đó, việc thực thi mã đã đi vào khác khối, nơi chúng tôi cài đặt npm bằng cách sử dụng đúng cách quản lý gói hàng. Như chúng ta có thể thấy, nó đã nhắc tôi nhập mật khẩu và bắt đầu cài đặt npm.

Chúng ta cũng có thể lồng một cái khác nếu khác khối bên trong một nếu như, khác hoặc là elif khối:

x = 0 y = 1 if [$ x -eq 0] then echo "X is 0" if [$ y -eq 1] then echo "Y is 1" else echo "Y không phải là 1" fi else echo "X là không phải 0 "fi

Điều này rất hữu ích khi một tập hợp các điều kiện riêng biệt sẽ được kiểm tra sau khi một điều kiện ban đầu được thỏa mãn.

Ví dụ: mã sau cố gắng cài đặt phần mềm máy chủ web:

if nginx -v then echo "NGINX đã được cài đặt." else if sudo apt install nginx then echo "Cài đặt NGINX thành công." elif sudo apt install apache2 rồi echo "Cài đặt APACHE2 thành công." else echo "Không thể cài đặt bất kỳ phần mềm web nào." fi

Đầu tiên, mã sẽ kiểm tra xem Nginx đã được cài đặt trong hệ thống hay chưa. Nếu có, nó chỉ hiển thị một thông báo và thoát ra. Nếu không, nó sẽ cố gắng cài đặt Nginx.

Nếu vì lý do nào đó, không thể cài đặt Nginx trong hệ thống từ gói, nó sẽ thử cài đặt Apache2. Nếu ngay cả Apache2 gặp lỗi trong khi cài đặt, nó sẽ thoát ra hiển thị thông báo rằng không thể cài đặt phần mềm.

Theo cách tương tự, một khối lồng nhau có thể được sử dụng bên trong một elif khối cũng như vậy.

Đang thực thi nếu khác: Tập lệnh và Dòng lệnh

Tương tự với bất kỳ mã Bash nào, nếu khác câu lệnh có thể được sử dụng trong Bash shell trực tiếp hoặc từ một tệp script shell thực thi. Sau khi trình thông dịch Bash tìm thấy nếu như, khác hoặc là elif , nó tiếp tục trình bao để cho phép người dùng nhập khối mã.

Người dùng cũng có thể lưu mã này trong một tệp script và thực thi tệp script.

Các #! / bin / bash lúc bắt đầu chỉ định trình thông dịch sẽ được sử dụng khi tệp được thực thi. Mặc dù Bash là trình bao được sử dụng phổ biến nhất hiện nay, nhưng một số người dùng thích các trình bao như zsh, nên được chỉ định thay cho bash ở đầu tệp này.

Để cấp quyền thực thi cho tệp này, hãy chạy:

chmod + x test.sh

Cuối cùng, để thực thi tệp, hãy chạy:

./test.sh

Sự kết luận

Tương tự như bất kỳ ngôn ngữ lập trình nào, nếu khác tuyên bố là một tính năng cơ bản của Bash. Học cách sử dụng nó sẽ giúp bạn viết được các script cơ bản cũng như nâng cao một cách lâu dài.