กฎ
sh_binary
ดูแหล่งที่มาของกฎsh_binary(name, deps, srcs, data, args, compatible_with, deprecation, distribs, env, exec_compatible_with, exec_properties, features, licenses, output_licenses, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)
  ระบบจะใช้sh_binaryกฎเพื่อประกาศสคริปต์เชลล์ที่เรียกใช้งานได้
  (sh_binary เป็นชื่อที่ไม่ถูกต้อง เนื่องจากเอาต์พุตของมันไม่จำเป็นต้องเป็นไบนารี) กฎนี้ช่วยให้มั่นใจได้ว่า
  จะมีการสร้างการขึ้นต่อกันทั้งหมดและปรากฏในส่วน runfiles ในเวลาที่เรียกใช้
  เราขอแนะนำให้ตั้งชื่อกฎ sh_binary() ตามชื่อของสคริปต์โดยลบ
  นามสกุลออก (เช่น .sh) ชื่อกฎและชื่อไฟล์ต้องแตกต่างกัน
  sh_binary จะพิจารณา Shebang ดังนั้นจึงอาจใช้ตัวแปลที่มีอยู่ (เช่น
  #!/bin/zsh)
ตัวอย่าง
สำหรับสคริปต์เชลล์อย่างง่ายที่ไม่มีการขึ้นต่อกันและมีไฟล์ข้อมูลบางไฟล์ ให้ทำดังนี้
sh_binary(
    name = "foo",
    srcs = ["foo.sh"],
    data = glob(["datafiles/*.txt"]),
)
อาร์กิวเมนต์
| Attributes | |
|---|---|
| name | ชื่อ (ต้องระบุ) ชื่อที่ไม่ซ้ำกันสำหรับเป้าหมายนี้ | 
| deps | รายการป้ายกำกับ ค่าเริ่มต้นคือ  depsที่แอตทริบิวต์ทั่วไปที่กำหนดโดย
          กฎการสร้างส่วนใหญ่
            ควรใช้แอตทริบิวต์นี้เพื่อแสดง | 
| srcs | รายการป้ายกำกับ (ต้องระบุ)ไฟล์ที่มีสคริปต์เชลล์ 
            แอตทริบิวต์นี้ต้องเป็นรายการแบบ Singleton ซึ่งมีองค์ประกอบเป็นสคริปต์เชลล์
            สคริปต์นี้ต้องเรียกใช้ได้ และอาจเป็นไฟล์ต้นฉบับหรือไฟล์ที่สร้างขึ้น
            ไฟล์อื่นๆ ทั้งหมดที่จำเป็นในรันไทม์ (ไม่ว่าจะเป็นสคริปต์หรือข้อมูล) จะอยู่ในแอตทริบิวต์
             | 
sh_library
ดูแหล่งที่มาของกฎsh_library(name, deps, srcs, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, restricted_to, tags, target_compatible_with, testonly, visibility)
  การใช้งานหลักของกฎนี้คือการรวบรวม "ไลบรารี" เชิงตรรกะ
  ซึ่งประกอบด้วยสคริปต์ที่เกี่ยวข้อง ซึ่งก็คือโปรแกรมใน
  ภาษาที่ตีความซึ่งไม่จำเป็นต้องมีการคอมไพล์หรือลิงก์
  เช่น Bourne Shell และข้อมูลใดๆ ที่โปรแกรมเหล่านั้นต้องการใน
  รันไทม์ จากนั้นจะใช้ "ไลบรารี" ดังกล่าวจากแอตทริบิวต์ data ของกฎ sh_binary อย่างน้อย 1 กฎได้
  คุณสามารถใช้กฎ filegroup เพื่อรวบรวมไฟล์ข้อมูล
  ในภาษาโปรแกรมที่ตีความแล้ว ไม่ได้มีข้อแตกต่างที่ชัดเจนเสมอไประหว่าง "โค้ด" กับ "ข้อมูล" เพราะท้ายที่สุดแล้ว โปรแกรมก็เป็นเพียง "ข้อมูล" จากมุมมองของตัวตีความ ด้วยเหตุนี้
  กฎนี้จึงมีแอตทริบิวต์ 3 รายการซึ่งเทียบเท่ากันโดยพื้นฐาน ได้แก่
  srcs, deps และ data
  การใช้งานในปัจจุบันไม่ได้แยกความแตกต่างระหว่างองค์ประกอบของรายการเหล่านี้
  แอตทริบิวต์ทั้ง 3 รายการยอมรับกฎ ไฟล์ต้นฉบับ และไฟล์ที่สร้างขึ้น
  อย่างไรก็ตาม แนวทางปฏิบัติแนะนำคือการใช้แอตทริบิวต์ตามวัตถุประสงค์ปกติ (เช่นเดียวกับกฎอื่นๆ)
ตัวอย่าง
sh_library(
    name = "foo",
    data = [
        ":foo_service_script",  # an sh_binary with srcs
        ":deploy_foo",  # another sh_binary with srcs
    ],
)
อาร์กิวเมนต์
| Attributes | |
|---|---|
| name | ชื่อ (ต้องระบุ) ชื่อที่ไม่ซ้ำกันสำหรับเป้าหมายนี้ | 
| deps | รายการป้ายกำกับ ค่าเริ่มต้นคือ  depsที่แอตทริบิวต์ทั่วไปที่กำหนดโดย
          กฎการสร้างส่วนใหญ่
            ควรใช้แอตทริบิวต์นี้เพื่อแสดง | 
| srcs | รายการป้ายกำกับ ค่าเริ่มต้นคือ  
          ควรใช้แอตทริบิวต์นี้เพื่อแสดงรายการไฟล์ต้นฉบับของ Shell Script ที่เป็นของ
          ไลบรารีนี้ สคริปต์สามารถโหลดสคริปต์อื่นๆ ได้โดยใช้คำสั่ง  | 
sh_test
ดูแหล่งที่มาของกฎsh_test(name, deps, srcs, data, args, compatible_with, deprecation, distribs, env, env_inherit, exec_compatible_with, exec_properties, features, flaky, licenses, local, restricted_to, shard_count, size, tags, target_compatible_with, testonly, timeout, toolchains, visibility)
sh_test() กฎจะสร้างการทดสอบที่เขียนเป็นสคริปต์ Bourne Shell
ดู แอตทริบิวต์ที่ใช้ร่วมกันในกฎการทดสอบทั้งหมด (*_test)
ตัวอย่าง
sh_test(
    name = "foo_integration_test",
    size = "small",
    srcs = ["foo_integration_test.sh"],
    deps = [":foo_sh_lib"],
    data = glob(["testdata/*.txt"]),
)
อาร์กิวเมนต์
| Attributes | |
|---|---|
| name | ชื่อ (ต้องระบุ) ชื่อที่ไม่ซ้ำกันสำหรับเป้าหมายนี้ | 
| deps | รายการป้ายกำกับ ค่าเริ่มต้นคือ  depsที่แอตทริบิวต์ทั่วไปที่กำหนดโดย
          กฎการสร้างส่วนใหญ่
            ควรใช้แอตทริบิวต์นี้เพื่อแสดง | 
| srcs | รายการป้ายกำกับ (ต้องระบุ)ไฟล์ที่มีสคริปต์เชลล์ 
            แอตทริบิวต์นี้ต้องเป็นรายการแบบ Singleton ซึ่งมีองค์ประกอบเป็นสคริปต์เชลล์
            สคริปต์นี้ต้องเรียกใช้ได้ และอาจเป็นไฟล์ต้นฉบับหรือไฟล์ที่สร้างขึ้น
            ไฟล์อื่นๆ ทั้งหมดที่จำเป็นในรันไทม์ (ไม่ว่าจะเป็นสคริปต์หรือข้อมูล) จะอยู่ในแอตทริบิวต์
             |