Trong PowerShell, cú pháp cho if
là như vậy:Làm thế nào đến `if (Test-Path ...)` thực sự hoạt động?
if (<test1>)
{<statement list 1>}
[elseif (<test2>)
{<statement list 2>}]
[else
{<statement list 3>}]
Một quy tắc cú pháp là cho subexpressions, bạn cần phải sử dụng dấu ngoặc như thế này:
write-output (get-date)
Vì vậy, với hai quy tắc kết hợp, tôi hy vọng rằng thử nghiệm cho một số đường dẫn cần được viết bằng hai bộ ngoặc đơn như sau:
if ((Test-Path ...)) {
# do something
}
Tuy nhiên, điều này cũng làm việc:
if (Test-Path ...) {
# do something
}
và chỉ vì lợi ích của sự hoàn chỉnh, này không công việc:
if (!Test-Path ...) {
# do something
}
(ở đây, bạn sẽ cần phải quấn subexpression trong ngoặc đơn như bình thường).
Bất cứ ai có thể giải thích các quy tắc cú pháp áp dụng ở đây và làm thế nào mà tôi có thể sử dụng thử nghiệm IF chỉ với một dấu ngoặc đơn? Có một số phép thuật PowerShell hay tôi hiểu nhầm các quy tắc cú pháp cơ bản?
Hãy thử điều này: 'if true'. Nó sẽ cung cấp cho bạn một lỗi * parser *. Tôi không có chuyên gia nhưng điều này dường như với tôi rằng dấu ngoặc đơn thực sự là một ngôn ngữ xây dựng ở đây, không phải là một nhà điều hành subexpression. – Borek
@Borek: Trong PowerShell, tôi nghĩ những gì bạn phải viết là nếu $ True – wunth