Đây có vẻ là một câu hỏi dễ, tôi tự hỏi tại sao việc googling không mang lại điều gì hữu ích - cũng không phải trong StackOverflow, cũng như trong hướng dẫn. Tôi chỉ cần kiểm tra bằng cách sử dụng bash rằng một điều kiện là sai.
Về những gì tôi tìm thấy tôi đã cố gắng
if ! [ 0==2 ]; then echo Hello; fi
và
if [ ! 0==2 ]; then echo Hello; fi
không ai trong số họ in Xin chào.
Tôi chỉ tìm thấy hai câu hỏi tương tự, nhưng câu trả lời cuối cùng trong cả hai trường hợp là mã được cấu trúc lại để không sử dụng điều kiện "sai".
Ý bạn là:
if ! [ 0 == 2 ]; then
echo Hello;
fi
Bạn thiếu không gian xung quanh toán tử đẳng thức.
Đây có thể là thời gian để đọc http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html - đặc biệt là các phần về nếu khác và các nhà khai thác. Tôi thường mở cái này khi tôi đang viết kịch bản ..
Để đánh giá toán học, hãy sử dụng (( ))
trong bash. Để sử dụng văn bản [[ ]]
.
if (( $i == 0 )); then
echo "i is 0"
else
echo "i is unequal 0"
Nếu bạn đang sử dụng lệnh test
([..]
), bạn có thể sử dụng tùy chọn so sánh cho số nguyên: -eq
, bằng và -ne
, không bằng nhau.
if [ 0 -eq 2 ]; then echo true ; else echo false ; fi # false
if [ 0 -eq 0 ]; then echo true ; else echo false ; fi # true
if [ 0 -ne 2 ]; then echo true ; else echo false ; fi # true
if [ 0 -ne 0 ]; then echo true ; else echo false ; fi # false
Trong bash toán tử [...]
tương đương với test
, một lệnh kiểm tra các loại tệp và so sánh các giá trị; kiểm tra là một lệnh nội bộ: nếu bạn yêu cầu Shell của bạn với type [
nó sẽ trả lời [ is a built in Shell command
. Bạn có thể tìm thấy nhị phân quá thường xuyên trong /usr/bin/[
.
SYNOPSIS là test EXPRESSION
, như bạn có thể đọc từ man test
hoặc từ info coreutils test invocation
.
Một EXPRESSION bị bỏ qua mặc định là sai. Mặt khác, EXPRESSION là đúng hoặc sai và đặt trạng thái thoát.
Đây là một đoạn trích từ người đàn ông mà cam giúp hiểu rõ hơn một chút
(EXPRESSION) EXPRESSION là đúng. Vì vậy, thật dễ dàng để xảy ra lỗi khi coi đó là một hoạt động 0==1
. (Hoạt động là 0 == 1
có khoảng trắng, 0==1
là một biểu thức).
! EXPRESSION EXPRESSION là sai.
Từ info coreutils test invocation
bạn có thể đọc về trạng thái thoát của bài kiểm tra.
Trạng thái thoát:
0 if the expression is true,
1 if the expression is false,
2 if an error occurred.
Ngoài các đánh giá toán học của bash, bạn có thể sử dụng các biểu thức boolean thay vì if
:
[[email protected]:~] $ (( 0 == 0 )) && echo True || echo False
True
[[email protected]:~] $ (( 0 != 0 )) && echo True || echo False
False