<!-- Generated with Stardoc: http://skydoc.bazel.build -->

Skylib module containing shell utility functions.

<a id="shell.array_literal"></a>

## shell.array_literal

<pre>
load("@bazel_skylib//lib:shell.bzl", "shell")

shell.array_literal(<a href="#shell.array_literal-iterable">iterable</a>)
</pre>

Creates a string from a sequence that can be used as a shell array.

For example, `shell.array_literal(["a", "b", "c"])` would return the string
`("a" "b" "c")`, which can be used in a shell script wherever an array
literal is needed.

Note that all elements in the array are quoted (using `shell.quote`) for
safety, even if they do not need to be.


**PARAMETERS**


| Name  | Description | Default Value |
| :------------- | :------------- | :------------- |
| <a id="shell.array_literal-iterable"></a>iterable |  A sequence of elements. Elements that are not strings will be converted to strings first, by calling `str()`.   |  none |

**RETURNS**

A string that represents the sequence as a shell array; that is,
parentheses containing the quoted elements.


<a id="shell.quote"></a>

## shell.quote

<pre>
load("@bazel_skylib//lib:shell.bzl", "shell")

shell.quote(<a href="#shell.quote-s">s</a>)
</pre>

Quotes the given string for use in a shell command.

This function quotes the given string (in case it contains spaces or other
shell metacharacters.)


**PARAMETERS**


| Name  | Description | Default Value |
| :------------- | :------------- | :------------- |
| <a id="shell.quote-s"></a>s |  The string to quote.   |  none |

**RETURNS**

A quoted version of the string that can be passed to a shell command.


