2012-11-08 28 views
5

Có sự khác nhau nào giữa các mẫu grep kèm theo dấu nháy đơn và kép không?mẫu grep đơn và đôi ngoặc kép

grep "abc" file.txt 

grep 'abc' file.txt 

Tôi đang yêu cầu kể từ khi không có cách nào tôi có thể kiểm tra tất cả các trường hợp có thể trên của riêng tôi, và tôi không muốn vấp ngã vào một trường hợp đó tôi nhận được sai :)

Trả lời

5

tôi thấy một sự khác biệt nếu bạn có ký tự đặc biệt:

Ex:

grep "foo$barbase" file.txt 

Vỏ sẽ cố mở rộng biến số $barbase, đây có thể không phải là những gì bạn định làm.

Nếu thay vào đó bạn gõ

grep 'foo$barbase' file.txt 

$bar được hiểu theo nghĩa đen.

Cuối cùng, luôn luôn thích dấu nháy đơn theo mặc định, nó mạnh hơn.

+1

Cuối cùng, luôn thích báo giá đơn giản theo mặc định, nó mạnh hơn. -> Bạn có nghĩa là dấu nháy đơn, phải không? :) –

1
  • Trong nháy kép, các ký tự sau có ý nghĩa đặc biệt: ‘$’, ‘`’,‘\’, và khi mở rộng lịch sử được kích hoạt,‘!’.

    Ký tự ‘$’ và ‘’ retain their special meaning within double quotes ($ for variables and để thực thi).

    Các thông số đặc biệt ‘*’ và ‘@’ giữ nguyên ý nghĩa đặc biệt của chúng trong các báo giá kép là làm đầu vào khi được $.

    '$', '`', '"', '\', hoặc hàng mới có thể được thoát bằng cách đặt trước chúng với một dấu gạch chéo.

    Các xuyệc ngược giữ lại ý nghĩa đặc biệt của nó khi tiếp theo '$', '' ', ' "',' \ 'hoặc dòng mới. Dấu gạch chéo ngược trước các ký tự không có ý nghĩa đặc biệt không bị sửa đổi.

    Ngoài ra nó sẽ rất hữu ích để kiểm tra mở rộng vỏ:
    https://www.gnu.org/software/bash/manual/html_node/Shell-Expansions.html#Shell-Expansions

  • Độc quote bỏ qua mở rộng vỏ.
+0

Hướng dẫn hay: https://en.wikibooks.org/wiki/Bash_Shell_Scripting – Zhenhua

Các vấn đề liên quan