Chapter 3: Variables and Parameters
Dive into Bash variables, both local and environment variables, and learn how to use parameters and arguments in your scripts for greater flexibility and functionality.
In this chapter, we'll cover the fundamentals of using variables and parameters in Bash scripting, which allow scripts to dynamically handle data, pass information, and perform tasks based on user input.
Understanding Variables in Bash
Variables store information that can be used and manipulated throughout a script. Bash supports different types of variables, including local and environment variables.
Local Variables
Local variables are declared and used within the script and exist only during the execution of that script. To declare a local variable, simply assign a value without any special syntax:
# Declaring a local variable
username="Alice"
echo "Hello, $username"
In this example, the variable username
stores the value "Alice"
, and we use $username
to access its value.
Environment Variables
Environment variables are available globally, meaning they can be accessed by all processes on the system. Common environment variables include PATH
, HOME
, and USER
.
To create an environment variable within a script, use the export
command:
# Setting an environment variable
export my_var="Global Value"
echo "Environment Variable: $my_var"
The export
command makes my_var
accessible to other scripts and processes launched from this script.
Using Parameters and Arguments
Parameters and arguments allow you to pass data into your script from the command line, enabling greater flexibility and customization.
Positional Parameters
Bash scripts can access command-line arguments using positional parameters. Each argument is accessible using a number, with $1
representing the first argument, $2
the second, and so on:
# Example script to greet a user by name
#!/bin/bash
echo "Hello, $1!"
Running ./script.sh Alice
would output Hello, Alice!
. Here, $1
represents the first argument passed to the script.
Special Parameters
Bash provides special parameters for handling arguments:
$#
: Number of arguments passed to the script.$@
: All arguments passed to the script as separate words.$*
: All arguments passed as a single word.$?
: Exit status of the last command executed.$$
: Process ID of the current script.
# Example: Using special parameters
echo "Number of arguments: $#"
echo "All arguments: $@"
echo "Script PID: $$"
Passing Arguments to Functions
Arguments can also be passed to functions within scripts, making them versatile and reusable. Inside a function, arguments are accessed with positional parameters $1
, $2
, etc.
# Example function with arguments
greet() {
echo "Hello, $1! Welcome to $2."
}
# Call the function with arguments
greet "Alice" "Bash Scripting"
This script calls the greet
function with two arguments, resulting in the output: Hello, Alice! Welcome to Bash Scripting.
Summary and Next Steps
In this chapter, you learned about variables, including local and environment variables, as well as parameters and arguments, which enhance your script's functionality. In the next chapter, we'll explore advanced control structures and looping mechanisms to further expand your Bash scripting capabilities.