Đôi lúc chúng ta muốn kết nối các lệnh lại và thực hiện theo thứtựkiểm tra khi ra một quyết định hay thực hiện lệnh khi một trong các điều kiện là đúng Hoàn toàn có thể dùng if để thực hiện
các yêu cầu trên nhưng shell cung cấp danh sách AND và OR gọn hơn.
phuongnh@it-hut.edu.vn 55 Danh sách AND
Cho phép thực thi một chuỗi lệnh kề nhau, lệnh sau chỉthực hiện khi lệnh trước đã thực hiện xong và thành công.
Cú pháp:
lệnh1 && lệnh2 && lệnh3 ....
Bắt đầu từ bên trái, lệnh1 sẽđược thực hiện trước, nếu trảvềtrue thì lệnh2 mới được thực hiện. Nếu lệnh2 trảvềfalse thì chấm dứt danh sách AND, ngược lại lệnh3 được gọi.
Kết quảcủa AND sẽlà true nếu tất cảcác lệnh đều được thực thi, ngược lại là false
phuongnh@it-hut.edu.vn 56 Danh sách AND - file andlist.sh
#!/bin/sh touch file1 rm -f file2
if [ -f file1 ] && echo "hello" && [ -f file2 ] && echo "there"
then
echo "in if" else
echo "in else" fi
exit 0
phuongnh@it-hut.edu.vn 57 Danh sách AND - file andlist.sh
Chạy file này, ta được kết quả hello
in else
Lệnh touch tạo file mới nếu file chưa tồn tại. Lệnh rm xóa file phuongnh@it-hut.edu.vn 58 Danh sách OR Thực thi một dãy các lệnh, nếu có một lệnh true thì việc thực thi ngừng lại. Cú pháp: lệnh1 || lệnh2 || lệnh3 ....
Bắt đầu từbên trái, lệnh1 được thực thi. Nếu lệnh1 trảvềfalse thì lệnh 2 được thực thi, nếu lệnh1 trảvềtrue thì các lệnh sau đó (lệnh2, lệnh3,...) không được thực thi. Cứ như vậy...
Danh sách OR - file orlist.sh
#!/bin/sh rm -f file1
if [ -f file1 ] || echo "Hello" || echo "there" then
echo "in if" else
echo "in else" fi
exit 0
Danh sách OR - file orlist.sh
Kết quả $./orlist.sh hello in if
phuongnh@it-hut.edu.vn 61 Khối lệnh
if [ -f file1 ] && { ls -l
echo "Khoi lenh" }
then
echo "Lenh hoan thanh" fi
phuongnh@it-hut.edu.vn 62