Variables in Bash
Variables in Bash are used to store and manipulate data. They are essential for writing flexible and reusable scripts.
1. Declaring Variables
To declare a variable, simply assign a value to a name without spaces around the =
sign.
Syntax:
variable_name=value
Examples:
name="Alice"
age=25
2. Accessing Variables
To use the value of a variable, prefix its name with a $
.
Examples:
name="Alice"
echo "Hello, $name!" # Output: Hello, Alice!
Using Curly Braces
Use curly braces {}
to explicitly delimit the variable name.
greeting="Hello"
echo "${greeting}, World!" # Output: Hello, World!
3. Types of Variables
a) Local Variables
These variables are available only within the current shell session or script.
b) Environment Variables
These variables are available globally and can be accessed by any subprocess.
Examples:
export PATH="/usr/local/bin:$PATH"
echo $PATH
c) Special Variables
Bash provides predefined variables for specific purposes, such as:
$0
: The name of the script.$1, $2, ...
: Positional parameters for command-line arguments.$#
: Number of arguments passed.$?
: Exit status of the last executed command.$$
: Process ID of the current shell.$@
and$*
: All arguments passed to the script.
4. Rules for Variable Names
- Variable names can contain letters, numbers, and underscores (
_
). - They must start with a letter or underscore.
- Avoid using special characters or spaces in names.
- Variable names are case-sensitive.
Examples:
my_var=10 # Valid
MyVar=20 # Valid (different from my_var)
1var=30 # Invalid (cannot start with a number)
var-name=40 # Invalid (special characters not allowed)
5. Default Variable Values
Use ${variable:-default}
to provide a default value if the variable is unset or empty.
Examples:
name=${name:-"Guest"}
echo "Hello, $name!" # Output: Hello, Guest! (if name is unset)
6. Modifying Variables
a) Arithmetic Operations
Use $((expression))
for arithmetic.
Examples:
num1=5
num2=10
sum=$((num1 + num2))
echo $sum # Output: 15
b) String Concatenation
first="Hello"
second="World"
greeting="$first, $second!"
echo $greeting # Output: Hello, World!
c) Increment and Decrement
counter=5
((counter++)) # Increment
echo $counter # Output: 6
7. Reading User Input into Variables
Use the read
command to get input from the user.
Examples:
echo "Enter your name:"
read name
echo "Hello, $name!"
8. Exporting Variables
To make a variable accessible to child processes, use export
.
Examples:
export MY_VAR="exported_value"
bash -c 'echo $MY_VAR' # Output: exported_value
9. Unsetting Variables
To remove a variable, use the unset
command.
Examples:
name="Alice"
unset name
echo $name # Output: (empty)
10. Best Practices for Using Variables
Always Quote Variables: Quoting prevents issues with spaces and special characters.
file_name="My File.txt" echo "$file_name"
Use Meaningful Names: Choose descriptive names for better readability.
total_users=100
Initialize Variables Before Use: Avoid referencing uninitialized variables.
Use Local Variables in Functions: Prevent conflicts by declaring variables with
local
inside functions.my_function() { local var="local_value" echo $var }
11. Debugging Variables
Use the declare
or set
command to list all variables in the current session.
Examples:
declare -p
set
Conclusion
Variables in Bash are the backbone of any script, enabling data manipulation, configuration, and communication between processes. By following best practices and mastering variable operations, you can create efficient and flexible scripts.
Let me know if you’d like more advanced examples or a breakdown of environment variables!
System variables are responsible to define the aspects of the shell. These variables are maintained by bash itself. But we can modify these variables to change shell aspects.
Type env on bash shell to print all the available variables with their value.
$ env
Generally, these variables are defined in capital letters. For example PATH, SHELL, HOME, LANG, PWD and many more.