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

 

 
2012 upshell | Header Image by Game Wallpapers
Avatar Gamezine Designed by Cheapest Tablet PC
Supported by Phones 4u