Android

Cách kiểm tra xem một chuỗi có chứa một chuỗi con trong bash không

Linux Shell Scripting for beginners | Get Started Now [Udemy Instructor, Jason Cannon]

Linux Shell Scripting for beginners | Get Started Now [Udemy Instructor, Jason Cannon]

Mục lục:

Anonim

Một trong những hoạt động phổ biến nhất khi làm việc với các chuỗi trong Bash là xác định xem một chuỗi có chứa chuỗi khác hay không., chúng tôi sẽ chỉ cho bạn một số cách để kiểm tra xem một chuỗi có chứa chuỗi con hay không.

Sử dụng ký tự đại diện

Cách tiếp cận đơn giản nhất là bao quanh chuỗi con bằng các ký hiệu đại diện dấu hoa thị (dấu hoa thị) * và so sánh nó với chuỗi. Ký tự đại diện là ký hiệu được sử dụng để thể hiện số không, một hoặc nhiều ký tự.

Nếu kiểm tra trả về true , chuỗi con được chứa trong chuỗi.

Trong ví dụ dưới đây, chúng tôi đang sử dụng câu lệnh if và toán tử đẳng thức ( == ) để kiểm tra xem chuỗi con SUB có được tìm thấy trong chuỗi STR :

#!/bin/bash STR='GNU/Linux is an operating system' SUB='Linux' if]; then echo "It's there." fi

Khi thực thi tập lệnh sẽ xuất ra:

It's there.

Sử dụng toán tử trường hợp

Thay vì sử dụng câu lệnh if, bạn cũng có thể sử dụng câu lệnh tình huống để kiểm tra xem một chuỗi có bao gồm một chuỗi khác hay không.

#!/bin/bash STR='GNU/Linux is an operating system' SUB='Linux' case $STR in *"$SUB"*) echo -n "It's there.";; esac

Sử dụng toán tử Regex

Một tùy chọn khác để xác định xem một chuỗi con được chỉ định có xảy ra trong một chuỗi hay không là sử dụng toán tử regex =~ . Khi toán tử này được sử dụng, chuỗi bên phải được coi là biểu thức chính quy.

Khoảng thời gian theo sau dấu hoa thị .* Khớp 0 hoặc nhiều lần xuất hiện bất kỳ ký tự nào ngoại trừ một ký tự dòng mới.

#!/bin/bash STR='GNU/Linux is an operating system' SUB='Linux' if]; then echo "It's there." fi

Kịch bản sẽ lặp lại như sau:

It's there.

Sử dụng Grep

Lệnh grep cũng có thể được sử dụng để tìm các chuỗi trong một chuỗi khác.

Trong ví dụ sau, chúng tôi sẽ chuyển chuỗi $STR làm đầu vào cho grep và kiểm tra xem chuỗi $SUB có được tìm thấy trong chuỗi đầu vào không. Lệnh sẽ trả về true hoặc false khi thích hợp.

#!/bin/bash STR='GNU/Linux is an operating system' SUB='Linux' if grep -q "$SUB" <<< "$STR"; then echo "It's there" fi

Tùy chọn -q bảo grep yên lặng, bỏ qua đầu ra.

Phần kết luận

Kiểm tra xem một chuỗi có chứa một chuỗi con là một trong những hoạt động cơ bản và thường được sử dụng nhất trong kịch bản Bash.

Sau khi đọc hướng dẫn này, bạn nên hiểu rõ về cách kiểm tra xem một chuỗi có bao gồm một chuỗi khác hay không. Bạn cũng có thể sử dụng các lệnh khác như awk hoặc sed để thử nghiệm.

thiết bị đầu cuối bash