GIÁO TRÌNH HỆ ĐIỀU HÀNH UNIX - LINUX - Trang 135

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).