Để xử lý các biến String có nhiều cách khác nhau, ở đây xin đưa ra 2 phương pháp khá đơn giản. Đó là: pattern matching và substituation. Ở đây ta giả sử có 1 biến $foo lưu giá trị "this is a test"
1. Pattern matching
Phương pháp này có thể match theo chiều trái sang hoặc phải sang. Công thức sử dụng như sau:
- Cấu trúc 1: ${foo#t*is}
Chức năng: xóa cụm từ tìm thấy ngắn nhất có thể tính từ trái sang. Ở đây từ cần tìm (pattern) là "t*is", tức là từ bắt đầu là t và kết thúc là is
Kết quả: " is a test"
- Cấu trúc 2: ${foo##t*is}
Chức năng: xóa cụm từ tìm thấy dài nhất có thể tính từ trái sang.
Kết quả: " a test"
- Cấu trúc 3: ${foo%t*st}
Chức năng: xóa cụm từ tìm thấy ngắn nhất có thể tính từ phải sang. Ở đây cụm từ cần tìm là "t*st", tức là từ bắt đầu bằng t và kết thúc bằng st.
Kết quả: "this is a "
- Cấu trúc 4: ${foo%%t*st}
Chức năng: xóa cụm từ tìm thấy dài nhất có thể tính từ phải sang.
Kết quả: ""
Lưu ý: Để dễ nhớ, có thể thấy trên bàn phím, phím # nằm bên trái phím $ còn phím % nằm bên phải, và tương ứng # tính từ trái còn % tính từ phải.
2. Substituation
Có 4 công thức cũng thường được sử dụng trong Bash để xử lý biến String.
- Công thức 1: ${foo:-bar}
Chức năng: Nếu biến $foo tồn tại và khác null thì trả về $foo, ngược lại trả về giá trị "bar", còn biến $foo vẫn giữ nguyên giá trị
- Công thức 2: ${foo:=bar}
Chức năng: Nếu biến $foo tồn tại và khác null trả về $foo, ngược lại trả về giá trị "bar" đồng thời set foo="bar"
- Công thức 3: ${foo:+bar}
Chức năng: Nếu biến $foo tồn tại và khác null thì trả về giá trị "bar", ngược lại trả về null
- Công thức 4: ${foo:?"error message"}
Chức năng: Nếu biến $foo tồn tại và khác null thì trả về $foo, ngược lại thì in ra chuỗi sau ? (ở đây là "error message")
(nguồn: http://www.linuxjournal.com/article/8919)
=-=-=-=-=
Powered by Blogilo
Không có nhận xét nào:
Đăng nhận xét