Dấu ngoặc tăng gấp đôi tăng gấp đôi bên trong chuỗi được trích dẫn kép là cách chèn dấu ngoặc kép. Phiên bản cập nhật của echoargs.exe thấy điều này rõ ràng hơn một chút vì nó cho bạn thấy những dòng lệnh sử dụng để gọi exe:
PS> echoargs " ""1"" 2 3 ""4 5 6"" 7 8 9"
Arg 0 is < 1 2 3 4>
Arg 1 is <5>
Arg 2 is <6 7 8 9>
Command line:
"C:\...\Modules\Pscx\Apps\EchoArgs.exe" " "1" 2 3 "4 5 6" 7 8 9"
Nếu bạn đi mà dòng lệnh (sau khi đã được phân tích bằng PowerShell) bạn nhận được cùng một kết quả trong CMD.exe:
CMD> EchoArgs.exe " "1" 2 3 "4 5 6" 7 8 9"
Arg 0 is < 1 2 3 4>
Arg 1 is <5>
Arg 2 is <6 7 8 9>
Command line:
C:\...\Modules\Pscx\Apps\EchoArgs.exe " "1" 2 3 "4 5 6" 7 8 9"
Vì sao .NET hoặc mã khởi động C++ phân tích cú pháp dòng lệnh như vậy, tôi không hoàn toàn chắc chắn. Điều này MSDN topic bao gồm nó một chút và nếu bạn nhìn vào các ví dụ ở dưới cùng của chủ đề, bạn sẽ thấy một số hành vi phân tích cú pháp kỳ lạ, ví dụ: a\\\b d"e f"g h
cho a\\\b
, de fg
và h
.
Nguồn
2012-01-18 06:30:43
Đây có phải là echoargs bạn đang sử dụng không? http://weblogs.asp.net/jgalloway/archive/2006/01/27/436713.aspx – ravikanth
Xem câu trả lời của Keith. Tôi đã cài đặt "thả công khai" của PSCX tuần trước. Tôi nghĩ anh ấy đã cập nhật nó kể từ đó. –
Câu hỏi hay về btw. Cho thấy sự bất bình của đối số của Powershell. Nhưng nó không thực sự là về '&' như bạn thấy giống nhau khi bạn chỉ gọi echoargs. – manojlds