- Chuyên mục khác :
- Git cơ bản và nâng cao
- ·
- MySQL cơ bản và nâng cao
- ·
- MongoDB cơ bản và nâng cao
- ·
- SQL cơ bản và nâng cao
- ·
- Linux cơ bản và nâng cao
- Học Unix/Linux cơ bản
- Học Unix/Linux cơ bản và nâng cao
- Unix/Linux là gì ?
- Quản lý File trong Unix/Linux
- Quản lý thư mục trong Unix/Linux
- Quyền hạn/Chế độ truy cập file trong Unix
- Hướng dẫn cài đặt Unix/Linux
- Các tiện ích cơ bản: in, email trong Unix
- Filter và Pipe trong Unix/Linux
- Quản lý tiến trình trong Unix/Linux
- Các tiện ích giao tiếp mạng trong Unix/Linux
- Trình soạn thảo vi trong Unix/Linux
- Chương trình Unix Shell
- Shell là gì?
- Sử dụng các biến trong Shell
- Các biến đặc biệt trong Unix/Linux
- Sử dụng mảng trong Shell
- Các toán tử Shell cơ bản
- Điều khiển luồng trong Shell
- Vòng lặp trong Unix/Linux
- Điều khiển vòng lặp trong Unix/Linux
- Trình thay thế Shell
- Các kỹ thuật trích dẫn trong Unix/Linux
- Điều hướng IO trong Unix/Linux
- Các hàm Shell
- ManPage Help trong Unix
- Hoạt động nâng cao trong Unix/Linux
- Regular Expression trong Unix/Linux
- Cơ bản về hệ thống File trong Unix/Linux
- Quản lý người dùng trong Unix/Linux
- Hiệu năng hệ thống trong Unix/Linux
- Hệ thống ghi log trong Unix/Linux
- Signal và Trap trong Unix/Linux
- Tài liệu Unix tham khảo
- Các lệnh hữu ích trong Unix/Linux
- Hàm toán học có sẵn trong Shell
- Tài liệu tham khảo Unix/Linux
Bạn có thể sử dụng nhiều lệnh if…elif để thực hiện nhiều nhánh lựa chọn. Tuy nhiên, nó luôn luôn không phải là giải pháp tốt nhất, đặc biệt khi tất cả các nhánh phụ thuộc vào giá trị của một biến đơn.
Shell hỗ trợ lệnh case…esac mà xử lý tình huống này một cách chính xác, và nó thực hiện một cách hiệu quả hơn là việc lặp đi lặp lại các lệnh if…elif.
Cú pháp trong Unix/Linux
Cú pháp đơn giản của lệnh case…esac là cung cấp một biểu thức để ước lượng và một số lệnh khác nhau để thực thi dựa trên cơ sở giá trị của biểu thức.
Bộ phiên dịch kiểm tra mỗi case – trường hợp ứng với giá trị của biểu thức tới khi tìm thấy sự so khớp. Nếu không có sự so khớp, điều kiện mặc định sẽ được sử dụng.
case word in pattern1) cac lenh de thuc thi neu ket noi voi pattern1 ;; pattern2) cac lenh de thuc thi neu ket noi voi pattern2 ;; pattern3) cac lenh de thuc thi neu ket noi voi pattern3 ;; esac
Ở đây, chuỗi word được so sánh với mỗi pattern cho tới khi tìm thấy một sự so khớp. Các lệnh theo sau pattern được so khớp này thực hiện. Nếu không tìm thấy sự so khớp nào, lệnh case thoát ra mà không thực hiện bất kỳ hành động nào.
Sẽ không giới hạn số lượng các pattern, nhưng số lượng tối thiểu là 1.
Khi các phần lệnh thực thi, lệnh ;; chỉ dẫn rằng dòng chương trình nên nhảy tới phần cuối của lệnh case. Nó tương tự như lệnh break trong Ngôn ngữ chương trình C.
Ví dụ trong Unix/Linux
#!/bin/sh FRUIT="kiwi" case "$FRUIT" in "apple") echo "Apple pie is quite tasty." ;; "banana") echo "I like banana nut bread." ;; "kiwi") echo "New Zealand is famous for kiwi." ;; esac
Nó sẽ cho kết quả sau:
New Zealand is famous for kiwi.
Một cách sử dụng tốt cho một lệnh case là sự ước lượng các tham số dòng lệnh như sau:
#!/bin/sh option="1" case in -f) FILE="2" echo "File name is $FILE" ;; -d) DIR="2" echo "Dir name is $DIR" ;; *) echo "`basename 0`:usage: [-f file] | [-d directory]" exit 1 # Command to come out of the program with status 1 ;; esac
Dưới đây là kết quả mẫu của chương trình này.
$./test.sh test.sh: usage: [ -f filename ] | [ -d directory ] $ ./test.sh -f index $ vi test.sh $ ./test.sh -f index File name is index $ ./test.sh -d unix Dir name is unix $
Các bài học UNIX phổ biến khác tại s2sontech:
- Quản lý File
- Thư mục
- Quyền truy cập File
- Cài đặt Unix/Linux
- Các tiện ích cơ bản
- Các Pipe & Bộ lọc (Filter)
Bình luận (0)