Tôi đã viết lệnh sau để khớp $ a với $ b, nhưng khi giá trị bao gồm "-" thì tôi gặp lỗi. Làm thế nào tôi có thể tránh điều đó?
# a="-Xmx5324m"
# b="-Xmx5324m"
#
#
# echo "$a" | grep -Fxc "$b"
grep: conflicting matchers specified
Nhân tiện, bạn có thực sự muốn một trận đấu regex không, hay bạn chỉ muốn kiểm tra xem một chuỗi có bằng (hoặc là một chuỗi con của) một chuỗi khác không? Trong trường hợp đó, shell được tích hợp sẵn
—
Uwe
[[ ... ]]
hoặc case
sẽ là lựa chọn tốt hơn, vì bạn tránh được cả các đặc điểm riêng echo
và quy trình con.
liệu một chuỗi có bằng không đây là thử nghiệm của tôi
—
yael
Một cách khác mà bạn không nên sử dụng mà không ai liệt kê: có thể thoát dấu gạch ngang bên trong một chuỗi được trích dẫn để nó được hiểu
—
Aaron
grep
là một ký tự theo nghĩa đen thay vì bắt đầu một tùy chọn, nghĩa là echo test-test | grep "\-test"
sẽ khớp thay vì phàn nàn về một -t
cờ không xác định .
grep -Fxc -- "$b" <<< "$a"
để tránh đường ống không cần thiết