2013-04-28 33 views
22

Làm cách nào để kiểm tra xem số ký tự trong $ dbUserName có lớn hơn tám ký tự không?Làm cách nào để kiểm tra biến có nhiều hơn tám ký tự trong PowerShell?

Tôi không thể tìm thấy lệnh hoặc chuỗi lệnh sẽ cho phép tôi thực hiện việc này. Tôi đã chỉ có thể tìm thấy nếu biến là null:

if ($dbUserName) { 
    Write-Output " You left Username blank" 
    $dbUserName = read-host 
} 

Nhưng tôi muốn thử nghiệm tiếp theo như thế này:

if ($dbUserName [String] > 8) } 
    Write-Output " Please enter more than 8 characters " 
    $dbUserName=read-host " Re-enter database user name" 
} 
+2

Rất tiếc, không ai bắt được logic trong mã này. Bạn đang kiểm tra nếu chiều dài tên người dùng lớn hơn 8 và khi True, bạn yêu cầu họ nhập nhiều ký tự hơn. Vì vậy, nếu chiều dài nhỏ hơn hoặc bằng 8, nó sẽ được chấp nhận. Tôi nghĩ rằng nó phải là -lt hoặc -le ... –

Trả lời

45

Sử dụng length tài sản của các loại [String]:

if ($dbUserName.length -gt 8) { 
    Write-Output "Please enter more than 8 characters." 
    $dbUserName = Read-Host "Re-enter database username" 
} 

Xin lưu ý rằng bạn phải sử dụng -gt thay vì > trong điều kiện if của mình. PowerShell sử dụng toán tử so sánh sau đây để so sánh giá trị và điều kiện thử nghiệm:

  • -eq = bằng
  • -ne = không bằng
  • -lt = ít hơn
  • -gt = lớn hơn
  • -le = nhỏ hơn hoặc bằng
  • -ge = lớn hơn hoặc bằng
+1

> là toán tử chuyển hướng. Tôi nghi ngờ -gt có thể là một lựa chọn tốt hơn. – mjolinor

+0

@mjolinor Vâng, đúng vậy. Các nguy cơ làm việc với nhiều ngôn ngữ. :) –

+0

Logic của bài đăng này vẫn còn thiếu sót. Nếu tên người dùng có độ dài hơn 8 ký tự, đầu ra là: nhập nhiều hơn 8 ký tự? Nó phải là -lt – LPChip

0

Bạn cũng có thể sử dụng -match với biểu thức Regular. Ví dụ:

if ($dbUserName -match ".{8}") 
{ 
    Write-Output " Please enter more than 8 characters " 
    $dbUserName=read-host " Re-enter database user name" 
} 

Ngoài ra nếu bạn đang như tôi và muốn dấu ngoặc nhọn của mình để được ở vị trí ngang nhau cho các khối mã của bạn, bạn có thể đặt rằng trên một dòng mới, vì nó mong đợi một khối mã nó sẽ nhìn vào dòng tiếp theo. Trong một số lệnh trong đó dấu ngoặc nhọn đầu tiên phải phù hợp với lệnh của bạn, bạn có thể sử dụng dấu trọng âm (`) để báo cho powershell xem dòng tiếp theo là một sự tiếp nối.