1
3
Ví dụ:
$ rm myf && echo "File is removed successfully" || echo "File is not removed"
Nếu file myf được xóa thành công (giá trị trả về của lệnh là 0) thì lệnh "echo File is
removed successfully
" sẽ được thực hiện, nếu không thì lệnh "echo File is not removed"
được chạy.
Giả sử trước khi ta vào trong một khối mã, ta phải thay đổi một thư mục và copy một
file. Có một cách để thực hiện điều này là sử dụng các toán tử if lồng nhau, như là đoạn mã
sau:
if cd /home/kwall/data
then
if cp datafile datafile.bak
then
# more code here
fi
fi
Tuy nhiên, bash cho phép ta viết đoạn mã này súc tích hơn nhiều như sau:
if cd /home/kwall/data && cp datafile datafile.bak
then
# more code here
fi
Cả hai đoạn mã đều thực hiện cùng một chức năng, nhưng đoạn thứ hai ngắn hơn nhiều,
gọn nhẹ và đơn giản. Mặc dù if chỉ kiểm tra các mã thoát, ta có thể sử dụng cấu trúc […]
lệnh test để kiểm tra các điều kiện phức tạp hơn. [condition] trả về giá trị biểu thị condition
là true hay false. test cũng có tác dụng tương tự.
Một ví dụ khác về cách sử dụng cấu trúc if:
#!/bin/sh
# Script to test if..elif...else
#
if [ $1 -gt 0 ]; then
echo "$1 is positive"
elif [ $1 -lt 0 ]
then
echo "$1 is negative"
elif [ $1 -eq 0 ]
then
echo "$1 is zero"
else
echo "Opps! $1 is not number, give number"
fi
Số lượng các phép toán điều kiện của biến hiện tại khoảng 35, khá nhiều và hoàn chỉnh.
Ta có thể kiểm tra các thuộc tính file, so sánh các xâu và các biểu thức số học.
Chú ý:
Các khoảng trống trước dấu mở ngoặc và sau dấu đóng ngoặc trong [condition]
là cần phải có. Đây là điều kiện cần thiết trong cú pháp shell của bash.
Bảng dưới là danh sách các toán tử test file phổ biến nhất (danh sách hoàn chỉnh có thể
tìm thấy trong những trang manual đầy đủ về bash).