ใน PowerShell ฉันสามารถเรียกใช้สิ่งนี้ในหนึ่งซับ
Get-ChildItem | foreach {
  if ($_ -match '.+?\.py$' -eq $true) {
    $_ | Do-Thing -WithFile
  }
  if ($_ -match '.+?\.pdf$' -eq $true) {
    $_ | Do-Thing -WithOtherFile
  }
}
ชอบมาก
Get-ChildItem | foreach { if ($_ -match '.+?\.py$' -eq $true) { $_ | Do-Thing -WithFile } if ($_ -match '.+?\.pdf$' -eq $true) { $_ | Do-Thing -WithOtherFile } }
 การทำงานเฉพาะของสิ่งนี้ที่ฉันชื่นชมคือการสามารถอ้างอิงวัตถุไปป์ไลน์ผ่าน $_ ที่จะใช้ในคำสั่งถัดไปและความสามารถในการดำเนินการตามเงื่อนไขขึ้นอยู่กับชิ้นส่วนแยกของเอาต์พุต | foreach {}. 
ฉันรู้ว่าในทุบตีมันจะง่ายต่อการ grep หลายรูปแบบในครั้งเดียวผ่าน
> ls | egrep '\.py$|\.pdf$'
some_foo.py
some_bar.py
foo.pdf
bar.pdf
เป็นไปได้หรือไม่ที่จะขยายสิ่งนี้ในหนึ่งซับด้วยสิ่งที่มีอยู่ตามค่าเริ่มต้นที่ฉันสามารถทำเทียบเท่าได้
| foreach { if ($_ -match '.+?\.py$') {Do-Thing -With $_ } if (...) { Do-Thing -WithOther $_ } }
หรือ Bash เพียงเปลี่ยนเส้นทาง stdout ของคำสั่งหนึ่งไปยัง stdin ของอีกคำสั่งหนึ่ง ฉันพบว่ามีหลายอย่างที่ใช้กับไดนามิกนี้ใน PowerShell แต่ไม่เคยได้ยินเรื่องของ Bash
นี่ไม่ใช่การปิดกั้นและการเขียนสคริปต์ในไวยากรณ์ปกติทำงานได้ดีฉันแค่อยากรู้อยากเห็นเพราะมันมีประโยชน์อย่างเหลือเชื่อใน PS
 กำลังมองหา: $_ , | foreach {} เทียบเท่าที่ฉันสามารถแยกเอาต์พุตตรวจสอบเงื่อนไขบนมันจากนั้นสามารถอ้างอิงส่วนแยกของเอาต์พุตผ่านชื่อบางชื่อ ในกรณีของ PS $ _ 
ฉันรู้ว่ามีหลายวิธีที่ PS แตกต่างจาก Bash อย่างมากดังนั้นฉันจะไม่แปลกใจหากนี่เป็น PS เฉพาะ
เพื่อบริบทที่ดีกว่านี่คือตัวอย่างใน PS ที่คุณจะค้นหาไฟล์ซ้ำด้วย python และส่วนขยาย pdf และสร้างบันทึกของไฟล์เหล่านั้นในไฟล์ข้อความที่เกี่ยวข้อง
Get-ChildItem -Recurse | foreach {
  if ($_ -match '.+?\.py$' -eq $true) {
    $_ | Out-File -encoding utf8 -Append py_list.txt
  }
  if ($_ -match '.+?\.pdf$' -eq $true) {
    $_ | Out-File -encoding utf8 -Append pdf_list.txt
  }
}