Never say "If" writing a Bash script! (Exit codes & logical operators)
Mục lục:
iftuyên bốif..elseTuyên bốif..elif..elseTuyên bố- Lồng nhau
ifTuyên bố - Nhiều điều kiện
- Toán tử kiểm tra
- Phần kết luận
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
và
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:
-
-nVAR- Đúng nếu độ dài của VAR lớn hơn 0.-zVAR- Đú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 INTEGER2thực sự lớn hơn INTEGER2.INTEGER1 -lt INTEGER2-INTEGER1 -lt INTEGER2thực sự nhỏ hơn INTEGER2.INTEGER1 -ge INTEGER2-INTEGER1 -ge INTEGER2thực sự bằng hoặc lớn hơn INTEGER2.INTEGER1 -le INTEGER2-INTEGER1 -le INTEGER2thực sự bằng hoặc nhỏ hơn INTEGER2.-hFILE- Đúng nếu TẬP_TIN tồn tại và là một liên kết tượng trưng.-rFILE- Đúng nếu FILE tồn tại và có thể đọc được.-wFILE- Đúng nếu FILE tồn tại và có thể ghi.-xFILE- Đúng nếu FILE tồn tại và có thể thực thi được.-dFILE- Đúng nếu FILE tồn tại và là một thư mục.-eFILE- Đú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.).-fFILE- Đú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
và
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.
Các dịch vụ Web như Hulu và Fancast rất lý tưởng cho việc xem các chương trình trực tuyến. Nhưng nếu bạn đang trên máy bay hoặc nếu không bị ngắt kết nối khỏi Internet? Replay Media Catcher có thể lưu video trực tuyến vào ổ cứng của bạn để xem ngoại tuyến.
Thật không may, Hulu, Fancast và các phần mềm tương tự trên mạng -nhu cầu dịch vụ không cho phép bạn tải về phương tiện truyền thông của họ. Thay vào đó, nó được phát trực tuyến theo thời gian thực, không có gì lưu trữ trên máy tính của bạn.
Ai đang trực tuyến? Sony tuyên bố 20m, Microsoft tuyên bố 17m
Rò rỉ, tuyên bố, và (chúng tôi muốn có) băng video - Microsoft phát hành số liệu thống kê trực tuyến, và quầy Sony.
Tuyên bố trường hợp Bash
Các báo cáo trường hợp Bash thường được sử dụng để đơn giản hóa các điều kiện phức tạp khi bạn có nhiều lựa chọn khác nhau. Sử dụng câu lệnh tình huống thay vì lồng nhau nếu câu lệnh sẽ giúp bạn làm cho tập lệnh bash của bạn dễ đọc hơn và dễ bảo trì hơn.







