Mastering Advanced Shell Scripting: 15 Key Interview Questions for DevOps Roles

TLDR: This blog post covers 15 advanced shell scripting interview questions tailored for DevOps roles, providing detailed explanations and examples for each question to help candidates demonstrate their proficiency in scripting during interviews.

In today's competitive job market, demonstrating proficiency in shell scripting is crucial for DevOps roles. This blog post dives into 15 advanced shell scripting interview questions that can help you showcase your skills effectively. Each question is accompanied by detailed explanations and examples to enhance your understanding.

1. How do you handle error checking in shell scripts?

Error checking is essential to ensure that commands execute successfully. You can check the exit status of the last executed command using the special variable $?. If the exit status is zero, the command was successful; otherwise, it failed. You can implement this using an if statement:

if [ $? -eq 0 ]; then
    echo "Command executed successfully"
else
    echo "Command failed execution"
fi

Alternatively, you can use set -e at the beginning of your script to exit immediately if any command returns a non-zero status.

2. How do you handle and trap signals in a shell script?

You can use the trap command to specify commands that should execute when the script receives specific signals. For example, to handle SIGINT (Ctrl+C) and SIGTERM, you can set up a cleanup function:

trap cleanup SIGINT SIGTERM
cleanup() {
    echo "Cleaning up..."
}

This allows you to perform necessary actions before the script terminates.

3. How do you debug a shell script?

To debug a shell script, you can enable debugging output using set -x and disable it with set +x. This will print each command and its arguments as they are executed, helping you trace the script's execution:

set -x

set +x

4. How do you use arrays in shell scripting?

Arrays allow you to store multiple values in a single variable. You can define an array and access its elements using their index:

my_array=(value1 value2 value3)
echo ${my_array[0]}  # Outputs value1

You can also iterate over the array using a loop:

for element in "${my_array[@]}"; do
    echo $element
done

5. How can you perform arithmetic operations in a shell script?

Shell scripting provides two options for arithmetic operations: using the expr command or the $(( )) syntax. The latter is preferred for its readability:

result=$((a + b))

6. How do you execute a command stored in a variable?

You can execute commands stored in variables using the eval command or by using the $( ) syntax:

cmd="ls -l"
eval $cmd

7. How do you handle command line arguments in a shell script?

You can access command line arguments using $1, $2, etc. To get all arguments, use $@, and to get the number of arguments, use $#:

echo "First argument: $1"
echo "Total arguments: $#"

8. How do you check if a variable is set in a shell script?

To check if a variable is set, you can use the -z option in an if statement:

if [ -z "$my_var" ]; then
    echo "Variable is not set"
else
    echo "Variable is set"
fi

9. How do you read a file line by line in a shell script?

You can read a file line by line using a while loop along with the IFS (Internal Field Separator):

while IFS= read -r line; do
    echo "$line"
done < filename.txt

10. How do you handle file locking in a shell script?

To prevent multiple processes from accessing a file simultaneously, you can use the flock command to create a lock:

exec 200>/var/lock/mylockfile
flock -n 200 || exit 1

11. How do you compress and decompress files in a shell script?

You can use tar and gzip for file compression and decompression. To create a compressed archive:

tar -czf archive.tar.gz /path/to/directory

To extract it:

tar -xzf archive.tar.gz

12. How do you manage background processes in a shell script?

To run a command in the background, append an & at the end of the command:

long_running_command &

You can use the wait command to wait for background processes to finish:

wait $!

13. How do you create a temporary file in a shell script?

You can create a temporary file using the mktemp command:

temp_file=$(mktemp)
echo "Temporary file created: $temp_file"

14. How do you pass JSON data in a shell script?

To parse JSON data, you can use the jq tool. For example:

json_data='{"name":"DJ","age":5}'
echo $json_data | jq '.name'

15. How do you perform string manipulation in a shell script?

You can use parameter expansion for string manipulation, such as substring extraction and replacement:

string="Hello World"
echo "${string:6:5}"  # Outputs World

Conclusion

These 15 advanced shell scripting questions and answers provide a solid foundation for preparing for DevOps interviews. Mastering these concepts will not only help you in interviews but also enhance your scripting skills in real-world applications. Don't forget to practice these examples and explore further to deepen your understanding of shell scripting.