नियम
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, शीबैंग का पालन करता है. इसलिए, उपलब्ध किसी भी इंटरप्रेटर का इस्तेमाल किया जा सकता है. उदाहरण के लिए,
  #!/bin/zsh)
उदाहरण
बिना किसी डिपेंडेंसी वाली सामान्य शेल स्क्रिप्ट और कुछ डेटा फ़ाइलों के लिए:
sh_binary(
    name = "foo",
    srcs = ["foo.sh"],
    data = glob(["datafiles/*.txt"]),
)
तर्क
| विशेषताएं | |
|---|---|
| name | नाम; ज़रूरी है इस टारगेट के लिए यूनीक नाम. | 
| deps | लेबल की सूची; डिफ़ॉल्ट वैल्यू  depsके बारे में सामान्य टिप्पणियां देखें. ज़्यादातर बिल्ड नियमों के हिसाब से तय किए गए सामान्य एट्रिब्यूट.
            इस एट्रिब्यूट का इस्तेमाल,  | 
| srcs | लेबल की सूची; ज़रूरी हैशेल स्क्रिप्ट वाली फ़ाइल. 
            इस एट्रिब्यूट की वैल्यू, एक ही एलिमेंट वाली सूची होनी चाहिए. इस सूची का एलिमेंट, शेल स्क्रिप्ट होता है.
            यह स्क्रिप्ट एक्ज़ीक्यूटेबल होनी चाहिए. यह कोई सोर्स फ़ाइल या जनरेट की गई फ़ाइल हो सकती है.
            रनटाइम के दौरान ज़रूरी सभी अन्य फ़ाइलें (चाहे वे स्क्रिप्ट हों या डेटा),  | 
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)
  इस नियम का मुख्य मकसद, एक लॉजिकल "लाइब्रेरी" को एक साथ एग्रीगेट करना है. इसमें मिलती-जुलती स्क्रिप्ट शामिल होती हैं. जैसे, इंटरप्रेट की गई भाषा में प्रोग्राम, जिन्हें कंपाइल या लिंक करने की ज़रूरत नहीं होती. जैसे, बॉर्न शेल. साथ ही, इसमें वे सभी डेटा शामिल होते हैं जिनकी ज़रूरत इन प्रोग्राम को रन-टाइम में होती है. इसके बाद, इन "लाइब्रेरी" का इस्तेमाल एक या एक से ज़्यादा sh_binary नियमों के data एट्रिब्यूट से किया जा सकता है.
  डेटा फ़ाइलों को इकट्ठा करने के लिए, filegroup नियम का इस्तेमाल किया जा सकता है.
  इंटरप्रेट की गई प्रोग्रामिंग भाषाओं में, "कोड" और "डेटा" के बीच हमेशा साफ़ तौर पर अंतर नहीं होता है: आखिरकार, प्रोग्राम इंटरप्रेटर के हिसाब से सिर्फ़ "डेटा" होता है. इस वजह से, इस नियम में तीन एट्रिब्यूट हैं. ये तीनों एट्रिब्यूट एक जैसे हैं:
  srcs, deps, और data.
  मौजूदा तरीके से लागू करने पर, इन सूचियों के एलिमेंट के बीच अंतर नहीं किया जाता.
  ये तीनों एट्रिब्यूट, नियमों, सोर्स फ़ाइलों, और जनरेट की गई फ़ाइलों को स्वीकार करते हैं.
  हालांकि, एट्रिब्यूट का इस्तेमाल उनके सामान्य मकसद के लिए करना सबसे सही तरीका है. ऐसा अन्य नियमों के साथ भी किया जाता है.
उदाहरण
sh_library(
    name = "foo",
    data = [
        ":foo_service_script",  # an sh_binary with srcs
        ":deploy_foo",  # another sh_binary with srcs
    ],
)
तर्क
| विशेषताएं | |
|---|---|
| name | नाम; ज़रूरी है इस टारगेट के लिए यूनीक नाम. | 
| deps | लेबल की सूची; डिफ़ॉल्ट वैल्यू  depsके बारे में सामान्य टिप्पणियां देखें. ज़्यादातर बिल्ड नियमों के हिसाब से तय किए गए सामान्य एट्रिब्यूट.
            इस एट्रिब्यूट का इस्तेमाल,  | 
| srcs | लेबल की सूची; डिफ़ॉल्ट वैल्यू  
          इस एट्रिब्यूट का इस्तेमाल, इस लाइब्रेरी से जुड़ी शेल स्क्रिप्ट की सोर्स फ़ाइलों को लिस्ट करने के लिए किया जाना चाहिए. स्क्रिप्ट, शेल के  | 
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() नियम, बॉर्न शेल स्क्रिप्ट के तौर पर लिखा गया टेस्ट बनाता है.
सभी टेस्ट नियमों (*_test) के लिए सामान्य एट्रिब्यूट देखें.
उदाहरण
sh_test(
    name = "foo_integration_test",
    size = "small",
    srcs = ["foo_integration_test.sh"],
    deps = [":foo_sh_lib"],
    data = glob(["testdata/*.txt"]),
)
तर्क
| विशेषताएं | |
|---|---|
| name | नाम; ज़रूरी है इस टारगेट के लिए यूनीक नाम. | 
| deps | लेबल की सूची; डिफ़ॉल्ट वैल्यू  depsके बारे में सामान्य टिप्पणियां देखें. ज़्यादातर बिल्ड नियमों के हिसाब से तय किए गए सामान्य एट्रिब्यूट.
            इस एट्रिब्यूट का इस्तेमाल,  | 
| srcs | लेबल की सूची; ज़रूरी हैशेल स्क्रिप्ट वाली फ़ाइल. 
            इस एट्रिब्यूट की वैल्यू, एक ही एलिमेंट वाली सूची होनी चाहिए. इस सूची का एलिमेंट, शेल स्क्रिप्ट होता है.
            यह स्क्रिप्ट एक्ज़ीक्यूटेबल होनी चाहिए. यह कोई सोर्स फ़ाइल या जनरेट की गई फ़ाइल हो सकती है.
            रनटाइम के दौरान ज़रूरी सभी अन्य फ़ाइलें (चाहे वे स्क्रिप्ट हों या डेटा),  |