PowerShell'de ve işareti ve çift işareti için değiştirmeler


28

Windows'un yerel CMD işlemcisinde, &komutları birlikte dizmek için kullanabilirsiniz , böylece biri diğerinden hemen sonra çalışır. A &&ikinci komutu yalnızca ilki hatasız tamamlarsa çalıştırır.

Bu birlikte komutları boru farklıdır |birinci komuta o çıktıda değildir , komutlar sadece basitçe normal yerinden gönderilen her biri için diğer ve çıkış ardına çalıştırılır ikinci komuta gönderilir.

Ancak, kullanmaya çalıştığımda &veya &&PowerShell'de hata alıyorum . PowerShell'de benzer işlevler var mı, yoksa bu özellik kullanımdan kaldırılıyor mu?



İlginç bir soru, powershell'in metaprogramminginin bu işlevselliği sağlamak için kullanılıp kullanılamayacağıdır&&
soandos

Yanıtlar:


35

&PowerShell içinde operatör adildir ;veya Noktalı virgül.

&&PowerShell içinde operatör olarak çalıştırmak zorundadır ifaçıklamada.

Command ; if($?) {Command}


1

Kabaca aynı şekilde kullanılabilen bu işlevi deneyin:

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

Şimdi &&, ; aahala mükemmel olmasa da, çok daha özlü olanla değiştirilebilir.

cls && build

olur

cls; aa build

1
Kullandığınız neden olmayan herhangi bir üslup nedeni args[0]değil function aa ($cmd)?
15’te

Bu komutları çağırmanın kırılgan bir yoludur; kullanmak komut dosyası blokları etrafında komutları geçmek ve sahip olanlar çağırmak için .değil, &bu değişkenler için bir alt kapsamı oluşturduğundan,.
mklement0
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.