บูลีนตัวอักษรใน PowerShell


151

บูลีนตัวอักษรใน PowerShell คืออะไร


23
นี่เป็นคำถามที่ดีและได้รับการโหวตจากฉัน ฉันมักจะอัปเดตคำถาม SO ที่ปรากฏในการค้นหา google ของฉันและช่วยฉันด้วย ผู้ลงคะแนนเสียงทั้งสี่ควรคิดใหม่เกี่ยวกับทัศนคติของพวกเขากับคำถามระดับเริ่มต้นที่ง่ายเช่นนี้
ulidtko

คำตอบ:


172

$true$falseและ

นั่นคือค่าคงที่ ไม่มีตัวอักษรระดับภาษาสำหรับบูลีน

ขึ้นอยู่กับที่คุณต้องการนอกจากนี้คุณยังสามารถใช้สิ่งที่coercesเป็นค่าบูลีนถ้าประเภทจะต้องมีบูลเช่นในการเรียกวิธีการที่จำเป็นต้องมีบูล (และไม่มีการโอเวอร์โหลดที่ขัดแย้งกัน) หรืองบเงื่อนไข ตัวอย่างวัตถุที่ไม่เป็นโมฆะส่วนใหญ่เป็นจริงเช่น nullสตริงว่างอาร์เรย์ว่างเปล่าและจำนวน0เป็นเท็จ


18

[bool]1และ[bool]0ยังใช้งานได้


3
เพื่อความแม่นยำคุณสามารถใช้สิ่งต่าง ๆ มากมายที่สามารถบีบบังคับให้บูลีนในบริบทที่การแปลงเกิดขึ้นเช่นในคำสั่งแบบมีเงื่อนไข และในกรณีเหล่านั้นคุณไม่จำเป็นต้องร่ายเลย if ($s.Length) { ... }ยกตัวอย่างเช่น
Joey

5

ในการเพิ่มข้อมูลเพิ่มเติมให้กับคำตอบที่มีอยู่แล้ว : ตัวอักษรบูลีน$trueและ$falseทำงานเหมือนเดิมเมื่อใช้เป็นพารามิเตอร์บรรทัดคำสั่งสำหรับสคริปต์ PowerShell (PS) สำหรับสคริปต์ PS ด้านล่างซึ่งจัดเก็บในไฟล์ชื่อinstallmyapp.ps1:

param (
    [bool]$cleanuprequired
)

echo "Batch file starting execution."

ตอนนี้ถ้าฉันจะเรียกไฟล์ PS นี้จากบรรทัดคำสั่ง PS นี่คือวิธีที่ฉันสามารถทำได้:

installmyapp.ps1 -cleanuprequired $true

หรือ

installmyapp.ps1 -cleanuprequired 1

ที่นี่1และ $trueเทียบเท่า นอกจากนี้0และ $falseยังเทียบเท่า

หมายเหตุ : อย่าคาดหวังว่าตัวอักษรสตริงtrueจะถูกแปลงเป็นบูลีนโดยอัตโนมัติ ตัวอย่างเช่นถ้าฉันใช้คำสั่งด้านล่าง:

installmyapp.ps1 -cleanuprequired true

มันไม่สามารถรันสคริปต์โดยมีข้อผิดพลาดด้านล่าง:

ไม่สามารถประมวลผลการแปลงอาร์กิวเมนต์ในพารามิเตอร์ 'cleanuprequired' ไม่สามารถแปลงค่า "System.String" เป็นประเภท "System.Boolean" พารามิเตอร์บูลีนยอมรับเฉพาะค่าบูลีนและตัวเลขเช่น $ True, $ False, 1 หรือ 0

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.