2016-04-18 48 views
6

ile satırlı hatları üzerinden koşul ben bölmek ulaşamayacağını "eğer" yorumlarla İLE PowerShell birden hatlar üzerinden koşul, örneğe bakın "eğer" bir bir bölmek için:yorumlarla

If (# Only do that when... 
    $foo # foo 
    -and $bar # AND bar 
) 
{ 
    Write-Host foobar 
} 

Bu üretir aşağıdaki hata: ` karakteri ekleme

Missing closing ')' after expression in 'if' statement.

çalışmaz:

If (` # Only do that when... 
    $foo ` # foo 
    -and $bar ` # AND bar 
) 
{ 
    Write-Host foobar 
} 

Şey alabilir:

Unexpected token '` # foo' in expression or statement.

buldum tek yolu yorumlarınızı kaldırmaktır:

If (` 
    $foo ` 
    -and $bar ` 
) 
{ 
    Write-Host foobar 
} 

Ama PowerShell başkalarının betik dilleri can yapmak için bir yol sunar eminim: Ben Bunu göremiyorum ...

+0

Ben $ bar' 'dan $ foo'' etmek -and' 'hareket edecek. – PetSerAl

cevap

5

PowerShell, eksik bir deyim algıladığında otomatik olarak satırları sarar.

if (# Only do that when... 
    $foo -and # foo AND 
    $bar  # bar 
)

(İlk satır geçerli bir ifadesi tek başına olduğu için) Aksi takdirde PowerShell iki farklı tablolar olarak iki satır ayrıştırmak ve: Örneğin bir sarkan operatörü ile bir çizgi yazarsanız karşılaştırma işlemleri için bu böyledir İkincisi başarısız çünkü geçersiz. Böylece linebreak kaçmak gerekir. Bununla birlikte, satırda bir kaçış karakteri koymak sadece işe yaramayacaktır, çünkü bu bir sonraki karakterden kaçacak ve linebreak'e dokunulmayacaktır. Yorum harf karakter haline kaçış karakterini dönüm, öncelik kazanır, çünkü bir (çizgi) yorum ile bir satırın sonunda koyarak


              
  
    $foo ` # foo 
  

da çalışmaz.


              
  
    $foo # foo` 
  

Eğer başka bir yerde yorumunu taşımak yapmalı ya linebreaks kaçmak isterseniz: @Chard önerildiği gibi

if (
    # Only do that when foo AND bar 
    $foo ` 
    -and $bar 
) 

veya kullanım blok yorum:

if (# Only do that when... 
    $foo  <# foo #> ` 
    -and $bar <# AND bar #> 
) 

Ama açıkçası, benim tavsiyem Operatörü önceki satırın sonuna taşımak ve kaçan linebreaks sorununu ortadan kaldırmaktır.

1

Bunu yapmak için blok yorumlarını <# Your Comment #> kullanabilirsiniz.

If (<# Only do that when... #> ` 
    $foo <# foo #> ` 
    -and $bar <# AND bar #> 
) 
{ 
    Write-Host foobar 
} 
0

Bu iş gibi görünüyor:

if (# Only do that when... 
    ($foo)-and # foo AND 
    ($bar)  # bar 
) 
{Write-Host 'foobar'}