James nói đúng, nhưng để thêm một số dữ liệu, tôi nghĩ rằng cách tốt nhất để suy nghĩ về nó là lập luận cho lệnh: bạn có định "xin chào" và "thế giới" là hai đối số hay "thế giới xin chào" là một tranh luận.
Ngoài ra, doublequote cho phép giải thích nhiều hơn chỉ là các biến. Chính xác những gì phụ thuộc vào vỏ của bạn, nhưng hãy kiểm tra mở rộng lịch sử, mở rộng dấu ngoặc và mở rộng tên tệp.
Cũng cần lưu ý rằng có một số trường hợp bạn cần sử dụng cả hai loại trích dẫn trong một đối số. Hãy nhớ rằng các đối số (theo mặc định) được phân cách bằng khoảng trắng, vì vậy nếu bạn không để lại bất kỳ khoảng trắng nào, bạn vẫn chỉ định cùng một đối số.
Cơ chế một đơn vị của hầu hết các shell không cho phép bất kỳ ký tự đặc biệt nào, điều đó có nghĩa là bất kỳ trường hợp nào của một đơn vị khác, ngay cả khi nó xuất hiện để thoát, kết thúc trích dẫn. Do đó, không thể truyền một chuỗi với một chuỗi đơn trong một chuỗi ký tự đơn và bạn phải sử dụng chuỗi kép. Điều này có thể là một nỗi đau khi bạn muốn vượt qua một đối số có chứa các câu đơn và một cái gì đó sẽ được giải thích, nhưng bạn không muốn. Ví dụ: nếu bạn muốn truyền chuỗi ký tự "` '$ VAR' là một biến ", bạn phải thực hiện theo cách này:
"'"'$VAR'"' is a variable"
Đó thực sự là một sự kết hợp của ba chuỗi thoát trích dẫn:
"'"
'$VAR'
"' is a variable"
hoặc, với các trích dẫn bị xóa:
'
$VAR
' is a variable
Trên thực tế, với hầu hết các shell, bạn cũng có thể làm theo cách này:
"'\$VAR' is a variable"
trong đó dấu gạch chéo ngược (" \
") báo cho shell chấp nhận ký tự sau theo nghĩa đen và không thực hiện bất kỳ mở rộng nào trên nó.
Nhưng có một số trường hợp cuối cùng bạn phải thực hiện theo cách nối đa chuỗi, không phải là tôi thực sự có thể đưa ra một ví dụ ngay bây giờ.