Thay thế cho ký hiệu và ký hiệu kép trong PowerShell


28

Trong bộ xử lý CMD gốc của Windows, bạn có thể sử dụng &để xâu chuỗi các lệnh lại với nhau để cái này chạy ngay sau cái kia. A &&sẽ chỉ chạy lệnh thứ hai nếu lệnh đầu tiên hoàn thành không có lỗi.

Điều này khác với các lệnh đường ống cùng với |đầu ra từ lệnh đầu tiên không được gửi đến lệnh thứ hai, các lệnh chỉ đơn giản là chạy lần lượt từng lệnh và đầu ra cho mỗi lệnh được gửi đến vị trí thông thường.

Tuy nhiên, tôi gặp lỗi khi tôi cố gắng sử dụng &hoặc &&trong PowerShell. Có các chức năng tương tự có sẵn trong PowerShell không, hay tính năng này có bị phản đối không?



Một câu hỏi thú vị là nếu siêu lập trình của powershell có thể được sử dụng để cung cấp chức năng này bằng cách sử dụng&&
soandos

Câu trả lời:


35

Các &nhà điều hành trong PowerShell chỉ là ;hoặc chấm phẩy.

Các &&nhà điều hành trong PowerShell phải được chạy như một iftuyên bố.

Command ; if($?) {Command}


1

Hãy thử chức năng này, có thể được sử dụng gần giống như vậy:

function aa() {
    if($?) {
        $command = [string]::join(' ', $args[1..99])
        & $args[0] $command
    }
}

Bây giờ &&có thể được thay thế bằng ; aa, mà trong khi vẫn chưa hoàn hảo thì gọn gàng hơn rất nhiều.

cls && build

trở thành

cls; aa build

1
Bất kỳ lý do phi phong cách tại sao bạn sử dụng args[0]và không function aa ($cmd)?
ruffin

Đây là một cách dễ dàng để gọi các lệnh; sử dụng các khối script để truyền các lệnh xung quanh và gọi các lệnh có ., không &, bởi vì cái sau tạo ra một phạm vi con cho các biến.
mkuity0
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.