# Variables

Like any language, Bash uses variables. No strict data types here; a variable holds numbers or characters.

Assign a value:

```bash
name="Shinobi"
```

> **Note:** No spaces around the `=` sign. This is critical.

Access the value using `$` before the variable name:

```bash
echo $name
```

While optional, wrapping the name in curly braces is good practice for clarity:

```bash
echo ${name}
```

Both would output: `Shinobi`.

Now, let's build a script.

First, create the file:

```bash
touch shinobi.sh
```

Then, open `shinobi.sh` and add this content to include a variable:

```bash
#!/usr/bin/env bash

name="Shinobi"

echo "Hi there $name"
```

Save and exit.

Make it executable:

```bash
chmod +x shinobi.sh
```

Run your script:

```bash
./shinobi.sh
```

You'll see:

```bash
Hi there Shinobi
```

This script:
* `#!/usr/bin/env bash`: Sets the interpreter.
* `name="Shinobi"`: Defines `name` with its value.
* `echo "Hi there $name"`: Outputs the welcome message using the variable.

You can use multiple variables:

```bash
#!/usr/bin/env bash

name="Shinobi"
greeting="Hello"

echo "$greeting $name"
```

Save and run `shinobi.sh` again:

```bash
./shinobi.sh
```

Output:

```bash
Hello Shinobi
```

No semicolons needed at line ends.

### Command Line Parameters

Bash scripts also read variables passed directly from the command line. These are called parameters.

Run your script with inputs like this:

```bash
./shinobi.sh Troy buddy!
```

Now, modify your `shinobi.sh` file to access these parameters:

```bash
#!/usr/bin/env bash

echo "Hello there" $1   # $1: first parameter
echo "Hello there" $2   # $2: second parameter
echo "Hello there" $@   # $@: all parameters
```

The output for `./shinobi.sh Troy buddy!` will be:

```bash
Hello there Troy
Hello there buddy!
Hello there Troy buddy!
```
