Lưu trữ trực tuyến miễn phí cho máy trạm

<Trước | Nội dung | Tiếp theo>

Chuyển đổi trường hợp

Các phiên bản gần đây của bash có hỗ trợ chuyển đổi chữ hoa/chữ thường của chuỗi. bash

có bốn phần mở rộng tham số và hai tùy chọn cho khai lệnh để hỗ trợ nó.

Vậy chuyển đổi trường hợp có ích lợi gì? Ngoài giá trị thẩm mỹ rõ ràng, nó còn có vai trò quan trọng trong lập trình. Hãy xem xét trường hợp tra cứu cơ sở dữ liệu. Hãy tưởng tượng người dùng đã nhập một chuỗi vào trường nhập dữ liệu mà chúng ta muốn tra cứu trong cơ sở dữ liệu. Có thể người dùng sẽ nhập giá trị bằng tất cả chữ hoa hoặc chữ thường hoặc kết hợp cả hai. Chúng tôi chắc chắn không muốn đưa vào cơ sở dữ liệu của mình mọi hoán vị có thể có của cách viết chữ hoa và chữ thường. Phải làm gì?

Một cách tiếp cận phổ biến cho vấn đề này là bình thường hóa đầu vào của người dùng. Tức là chuyển đổi nó


thành một dạng chuẩn hóa trước khi chúng ta thử tra cứu cơ sở dữ liệu. Chúng ta có thể làm điều này bằng cách chuyển đổi tất cả các ký tự trong dữ liệu đầu vào của người dùng thành chữ thường hoặc chữ hoa và đảm bảo rằng các mục cơ sở dữ liệu được chuẩn hóa theo cùng một cách.

khai lệnh có thể được sử dụng để chuẩn hóa chuỗi thành chữ hoa hoặc chữ thường. sử dụng khai, chúng ta có thể buộc một biến luôn chứa định dạng mong muốn bất kể nó được gán gì:



#! / bin / bash

# ul-khai báo: chứng minh chuyển đổi kiểu chữ thông qua khai báo -u trên

khai báo -l thấp hơn


nếu [[$1]]; sau đó

top="$1" low="$1" echo $upper echo $low

fi

#! / bin / bash

# ul-khai báo: chứng minh chuyển đổi kiểu chữ thông qua khai báo -u trên

khai báo -l thấp hơn


nếu [[$1]]; sau đó

top="$1" low="$1" echo $upper echo $low

fi


Trong đoạn script trên, chúng tôi sử dụng khai để tạo hai biến, phía trên thấp hơn. Chúng tôi gán giá trị của đối số dòng lệnh đầu tiên (tham số vị trí 1) cho từng biến và sau đó hiển thị chúng trên màn hình:



[tôi @ linuxbox ~] $ ul-khai báo aBc

ABC

abc

[tôi @ linuxbox ~] $ ul-khai báo aBc

ABC

abc


Như chúng ta có thể thấy, đối số dòng lệnh ("aBc") đã được chuẩn hóa.

Ngoài khai, có bốn phần mở rộng tham số thực hiện chuyển đổi chữ hoa/chữ thường:


Bảng 34-1: Mở rộng tham số chuyển đổi trường hợp


Định dạng kết quả

Định dạng kết quả

${tham số,,} Mở rộng giá trị của tham số thành tất cả chữ thường.


${tham số,} Mở rộng giá trị của tham số chỉ thay đổi cái đầu tiên

ký tự sang chữ thường.


${tham số^^} Mở rộng giá trị của tham số thành tất cả các chữ in hoa.



${tham số^} Mở rộng giá trị của tham số chỉ thay đổi cái đầu tiên

ký tự sang chữ hoa (viết hoa).



Đây là một kịch bản thể hiện những mở rộng này:



#! / bin / bash

# ul-param: chứng minh việc chuyển đổi trường hợp thông qua việc mở rộng tham số if [[ $1 ]]; sau đó

tiếng vang ${1,,}

tiếng vang ${1,} tiếng vang ${1^} tiếng vang ${1^}

fi

#! / bin / bash

# ul-param: chứng minh việc chuyển đổi trường hợp thông qua việc mở rộng tham số if [[ $1 ]]; sau đó

tiếng vang ${1,,}

tiếng vang ${1,} tiếng vang ${1^} tiếng vang ${1^}

fi


Đây là kịch bản đang hoạt động:



[tôi @ linuxbox ~] $ ul-param aBc

abc aBc ABC

ABc

[tôi @ linuxbox ~] $ ul-param aBc

abc aBc ABC

ABc


Một lần nữa, chúng ta xử lý đối số dòng lệnh đầu tiên và đưa ra bốn biến thể được hỗ trợ bởi phần mở rộng tham số. Trong khi tập lệnh này sử dụng tham số vị trí đầu tiên, tham số có thể là bất kỳ chuỗi, biến hoặc biểu thức chuỗi nào.


Điện toán đám mây hệ điều hành hàng đầu tại OnWorks: