15 tháng 4, 2010

Process String variable

Để 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