Android

Bash if..else tuyên bố

Never say "If" writing a Bash script! (Exit codes & logical operators)

Never say "If" writing a Bash script! (Exit codes & logical operators)

Mục lục:

Anonim

Ra quyết định là một trong những khái niệm cơ bản nhất của lập trình máy tính. Giống như trong bất kỳ ngôn ngữ lập trình nào khác, if , if..else , if..elif..else và lồng nhau if câu lệnh trong Bash có thể được sử dụng để thực thi mã dựa trên một điều kiện nhất định.

Trong hướng dẫn này, chúng tôi sẽ hướng dẫn bạn qua những điều cơ bản của Bash if câu lệnh và chỉ cho bạn cách sử dụng chúng trong các tập lệnh shell của bạn.

if tuyên bố

Bash if điều kiện có thể có các hình thức khác nhau. Câu lệnh if cơ bản nhất có dạng sau:

if TEST-COMMAND then STATEMENTS fi

Câu lệnh if bắt đầu bằng từ khóa if theo sau là biểu thức điều kiện và từ khóa then . Tuyên bố kết thúc với từ khóa fi .

Nếu TEST-COMMAND đánh giá là True , STATEMENTS được thực thi. Nếu TEST-COMMAND trả về False , không có gì xảy ra, STATEMENTS bị bỏ qua.

Nói chung, một cách thực hành tốt là luôn thụt lề mã của bạn và tách các khối mã bằng các dòng trống. Hầu hết mọi người chọn sử dụng thụt 4 không gian hoặc 2 không gian. Các vết lõm và dòng trống làm cho mã của bạn dễ đọc và có tổ chức hơn.

Hãy xem tập lệnh ví dụ sau để kiểm tra xem một số đã cho có lớn hơn 10 không.

#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." fi

Lưu mã trong một tệp và chạy nó từ dòng lệnh:

bash test.sh

Kịch bản sẽ nhắc bạn nhập số. Ví dụ: nếu bạn nhập 15, lệnh test sẽ đánh giá là true vì 15 lớn hơn 10 và lệnh echo bên trong mệnh đề then sẽ được thực thi.

The variable is greater than 10.

if..else Tuyên bố

Câu lệnh Bash if..else có dạng sau:

if TEST-COMMAND then STATEMENTS1 else STATEMENTS2 fi

Nếu TEST-COMMAND đánh giá là True , STATEMENTS1 sẽ được thực thi. Mặt khác, nếu TEST-COMMAND trả về False , STATEMENTS2 sẽ được thực thi. Bạn chỉ có thể có một mệnh đề else trong câu lệnh.

Hãy thêm một mệnh đề else vào tập lệnh ví dụ trước:

#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." else echo "The variable is equal or less than 10." fi

if..elif..else Tuyên bố

Câu lệnh Bash if..elif..else có dạng sau:

if TEST-COMMAND1 then STATEMENTS1 elif TEST-COMMAND2 then STATEMENTS2 else STATEMENTS3 fi

Nếu TEST-COMMAND1 ước tính là True , TEST-COMMAND1 sẽ được thực thi. Nếu TEST-COMMAND2 ước tính là True , TEST-COMMAND2 sẽ được thực thi. Nếu không có lệnh kiểm tra nào đánh giá là True , thì STATEMENTS2 được thực thi.

Bạn có thể có một hoặc nhiều mệnh đề elif trong câu lệnh. Mệnh đề else là tùy chọn.

Các điều kiện được đánh giá tuần tự. Khi một điều kiện trả về True các điều kiện còn lại không được thực hiện và điều khiển chương trình di chuyển đến cuối câu lệnh if.

Hãy thêm một mệnh đề elif vào tập lệnh trước:

#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." elif] then echo "The variable is equal to 10." else echo "The variable is less than 10." fi

Lồng nhau if Tuyên bố

Bash cho phép bạn lồng if câu lệnh trong câu lệnh if. Bạn có thể đặt nhiều câu lệnh if bên trong câu lệnh if khác.

Kịch bản sau đây sẽ nhắc bạn nhập ba số và sẽ in số lớn nhất trong số ba số.

#!/bin/bash echo -n "Enter the first number: " read VAR1 echo -n "Enter the second number: " read VAR2 echo -n "Enter the third number: " read VAR3 if] then if] then echo "$VAR1 is the largest number." else echo "$VAR3 is the largest number." fi else if] then echo "$VAR2 is the largest number." else echo "$VAR3 is the largest number." fi fi

Đây là cách đầu ra sẽ như thế nào:

Enter the first number: 4 Enter the second number: 7 Enter the third number: 2 7 is the largest number. Thay vì sử dụng các câu lệnh if lồng nhau, thông thường sẽ hiệu quả hơn khi sử dụng câu lệnh tình huống.

Nhiều điều kiện

Các toán tử OR AND logic cho phép bạn sử dụng nhiều điều kiện trong các câu lệnh if.

Đây là một phiên bản khác của tập lệnh để in số lớn nhất trong số ba số. Trong phiên bản này, thay vì các câu lệnh if lồng nhau, chúng ta sẽ sử dụng toán tử AND ( && ) logic.

#!/bin/bash echo -n "Enter the first number: " read VAR1 echo -n "Enter the second number: " read VAR2 echo -n "Enter the third number: " read VAR3 if] &&] then echo "$VAR1 is the largest number." elif] &&] then echo "$VAR2 is the largest number." else echo "$VAR3 is the largest number." fi

Toán tử kiểm tra

Trong Bash, lệnh test có một trong các dạng cú pháp sau:

test EXPRESSION]

Để phủ định biểu thức kiểm tra, sử dụng toán tử NOT ( ! ) Logic. Khi so sánh các chuỗi luôn sử dụng dấu ngoặc đơn hoặc dấu ngoặc kép để tránh bất kỳ vấn đề chia tách hoặc tách từ nào.

Dưới đây là một số toán tử được sử dụng phổ biến nhất:

  • -n VAR - Đúng nếu độ dài của VAR lớn hơn 0. -z VAR - Đúng nếu VAR trống. STRING1 = STRING2 - Đúng [STRING1 và STRING2 bằng nhau. STRING1 != STRING2 - True STRING1 và STRING2 không bằng nhau. INTEGER1 -eq INTEGER2 - INTEGER1 và INTEGER2 thực sự bằng nhau. INTEGER1 -gt INTEGER2 - INTEGER1 -gt INTEGER2 thực sự lớn hơn INTEGER2. INTEGER1 -lt INTEGER2 - INTEGER1 -lt INTEGER2 thực sự nhỏ hơn INTEGER2. INTEGER1 -ge INTEGER2 - INTEGER1 -ge INTEGER2 thực sự bằng hoặc lớn hơn INTEGER2. INTEGER1 -le INTEGER2 - INTEGER1 -le INTEGER2 thực sự bằng hoặc nhỏ hơn INTEGER2. -h FILE - Đúng nếu TẬP_TIN tồn tại và là một liên kết tượng trưng. -r FILE - Đúng nếu FILE tồn tại và có thể đọc được. -w FILE - Đúng nếu FILE tồn tại và có thể ghi. -x FILE - Đúng nếu FILE tồn tại và có thể thực thi được. -d FILE - Đúng nếu FILE tồn tại và là một thư mục. -e FILE - Đúng nếu FILE tồn tại và là một tệp, bất kể loại (nút, thư mục, ổ cắm, v.v.). -f FILE - Đúng nếu FILE tồn tại và là một tệp thông thường (không phải là thư mục hoặc thiết bị).

Phần kết luận

Các câu lệnh if , if..else if..elif..else cho phép bạn kiểm soát luồng thực thi của tập lệnh Bash bằng cách đánh giá các điều kiện đã cho.

thiết bị đầu cuối bash