Hey there, future Linux rockstar! If you’re gearin’ up for a tech interview, especially in the Linux world, you’ve probably heard about shell scripting. And yo, if you haven’t, let me tell ya—mastering shell script interview questions can be your golden ticket to some seriously sweet gigs. We’re talkin’ roles payin’ between $85K and $185K a year in the US market for stuff like sysadmin, DevOps, and even Site Reliability Engineer (SRE) positions. That’s right, big bucks for knowin’ how to automate the boring stuff with a few lines of Bash!
At our lil’ corner of the tech blogosphere, we’re all about gettin’ you ready to crush it. So, I’ve put together this mega guide to walk ya through every kinda shell script question you might face—from the no-brainer basics to the sweaty-palm advanced stuff they throw at senior-level interviews. Whether you’re just startin’ out or aimin’ for that $130K+ SRE role, stick with me. We’ll break it down simple, throw in some code you can actually use, and get ya feelin’ like a pro before you even walk into that Zoom call or onsite terminal test.
Why Shell Scripting Skills Are Worth Big Money
Before we jump into the nitty-gritty let’s chat about why shell scripting matters so dang much. In today’s tech game especially if you’re eyein’ jobs in the US, companies ain’t just lookin’ for someone who can click around a GUI. They want folks who can automate tasks, save time, and keep systems runnin’ smooth. Shell scripting—especially with Bash—is how you tell your computer, “Hey, stop buggin’ me with this repetitive junk. Do it yourself!”
Here’s the deal in numbers
- Linux Sysadmin: $85K–$110K a year, and you gotta know Bash for automation and log management.
- DevOps Engineer: $110K–$145K, where you’re writin’ scripts for CI/CD pipelines and deployments.
- SRE (Site Reliability Engineer): $130K–$175K, automatin’ incident response and monitorin’ like a boss.
- Cloud/AWS Engineer: $120K–$160K, scriptin’ for EC2 setups and Lambda handlers.
See what I mean? These ain’t small potatoes. If you’re in a tech hub like NYC or Seattle, expect at least one live codin’ question in Bash durin’ your interview. So, let’s get you prepped to nail it!
Beginner Shell Script Interview Questions: Startin’ Strong
Let’s kick things off with the basics. These are the questions that pop up in the first few minutes of an interview. Mess these up, and it’s game over real quick. Nail ‘em with confidence, and you’re signalin’ you ain’t no rookie. Here’s what you need to know:
1. What’s This “Shebang” Thing and Why’s It Needed?
Every shell script starts with a funky lil’ line called the shebang. It looks like this: #!/bin/bash. This line tells your system, “Yo, use Bash to run this script.” Without it, the computer might guess wrong about which interpreter to use, and your script flops.
Code Example
#!/bin/bash# A simple script to say hiecho "Hey, world!"
Why It Matters: I always say, puttin’ the shebang in is like givin’ your script a proper ID card. It avoids mix-ups, especially if someone’s runnin’ a different shell like zsh or ksh.
2. How Do Ya Make a Script Run?
This one trips up newbies all the time. You can’t just write a script and expect it to work. Ya gotta make it executable first, then run it. Easy peasy, but miss this step and you’re stuck.
Steps to Run:
- Make it executable:
chmod +x myscript.sh - Run it:
./myscript.shorbash myscript.sh
Quick Tip: I’ve seen folks forget the chmod bit in interviews. Don’t be that person. Show ‘em you know the drill by mentionin’ both ways to run it.
3. What Are Special Variables in Bash?
Special variables are like little info nuggets Bash gives ya about your script while it’s runnin’. Interviewers love askin’ this to see if you’ve actually written scripts or just copied stuff online.
Common Ones:
$0: Name of your script.$1: First argument you passed to it.$#: How many arguments were passed.$?: Exit code of the last command (0 means all good).$$: The process ID of your script.
Pro Move: When I answer this, I always mention $? and how I use it to check if somethin’ failed. It shows you’re thinkin’ about errors, which is huge in real-world work.
Intermediate Shell Script Interview Questions: Step Up Your Game
Alright, now we’re gettin’ into the meaty stuff. These questions separate the $85K hopefuls from the $110K–$130K contenders. At this level, they wanna see you can handle real-world automation with loops, conditions, and proper error handlin’.
4. Can Ya Write a Script for a Daily Cleanup Task?
This is where you prove you automate stuff for real. Here’s a script to clean up old logs, somethin’ every sysadmin should know. I’ll explain every bit so you can talk through it in an interview.
Code Example:
#!/bin/bash# cleanup.sh - Daily log cleanupLOG_DIR="/var/log/myapp"BACKUP_DIR="/backup/logs"DAYS_TO_KEEP=7# Make backup folder if it ain’t theremkdir -p "$BACKUP_DIR"# Zip logs older than 7 daysfind "$LOG_DIR" -name "*.log" -mtime +$DAYS_TO_KEEP -exec gzip {} ;# Move zipped logs to backupmv "$LOG_DIR"/*.gz "$BACKUP_DIR/" 2>/dev/null# Tell me it’s doneecho "[$(date)] Cleanup done. Logs older than ${DAYS_TO_KEEP} days moved."
Why It’s Smart: I always quote variables like "$BACKUP_DIR" to handle weird file names with spaces. Plus, addin’ a timestamp to the output? That’s how ya trace when it ran, especially if it’s automated.
5. How Do Ya Handle Errors in a Script?
This one’s a biggie. Beginners let scripts fail quietly, but pros don’t play that game. In production, a silent fail can mess up everythin’. Here’s how I lock it down.
Code Example:
#!/bin/bashset -Eeuo pipefail# -E: ERR traps work in functions# -e: Stop if any command fails# -u: Catch unset variables# -o pipefail: Fail if any part of a pipe breaks# Trap errors for a custom messagetrap 'echo "ERROR: Somethin’ broke at line $LINENO" >&2' ERRdeploy_stuff() { echo "Pushin’ to the cloud..." aws s3 sync ./dist s3://my-bucket --delete echo "All done."}deploy_stuff
What to Say: I tell interviewers I start every serious script with set -Eeuo pipefail. It’s like puttin’ a safety net under your code. Without it, a failed command in the middle could keep goin’ and wreck stuff.
6. Show Me Loops—For and While. When Do Ya Use ‘Em?
Loops are bread and butter for automation. You’ll get asked to show a for loop and a while loop, plus explain when each fits.
Code Example:
# FOR loop - Good for known listsfor server in web01 web02 web03; do echo "Checkin’ $server..." ssh "$server" "systemctl status nginx"done# WHILE loop - Good for waitin’ on somethin’RETRIES=0while ! ping -c1 8.8.8.8 &>/dev/null; do echo "Network’s down, waitin’... (try $RETRIES)" RETRIES=$((RETRIES + 1)) sleep 5 [ $RETRIES -ge 10 ] && { echo "I’m out."; exit 1; }doneecho "Network’s back!"
When to Use: I use for loops when I got a set list—like servers or files. While loops are my go-to for retryin’ stuff, like waitin’ for a network to come up.
Advanced Shell Script Interview Questions: Prove You’re Senior Material
Now we’re in the big leagues. These questions are for $130K+ roles like SRE or senior DevOps. Companies wanna see scripts that are bulletproof, debuggable, and team-friendly.
7. Write a Deployment Script with Rollback. Make It Production-Ready.
A deploy script without a rollback plan is a disaster waitin’ to happen. Here’s how I build one that saves the day if somethin’ goes south.
Code Example:
#!/bin/bashset -euo pipefailAPP_DIR="/opt/myapp"BACKUP_DIR="/opt/myapp-backup-$(date +%Y%m%d-%H%M%S)"NEW_BUILD="./dist"rollback() { echo "[ROLLBACK] Deploy failed. Goin’ back..." rm -rf "$APP_DIR" cp -r "$BACKUP_DIR" "$APP_DIR" systemctl restart myapp echo "[ROLLBACK] All good now." exit 1}trap rollback ERR# Backup current appecho "Backin’ up current version..."cp -r "$APP_DIR" "$BACKUP_DIR"# Deploy new stuffecho "Deployin’ new build..."rsync -av --delete "$NEW_BUILD/" "$APP_DIR/"# Restart and checksystemctl restart myappsleep 3systemctl is-active --quiet myapp || { echo "Service ain’t startin’"; exit 1; }echo "Deploy worked!"
Why It’s Clutch: I use trap ERR to catch any hiccup and roll back automatically. This kinda setup is what ya see in serious CI/CD pipelines. It shows you’re thinkin’ about recovery, not just deployment.
8. How Do Ya Set Up and Debug a Cron Job?
Cron jobs automate stuff to run on a schedule—like every night at 2 AM. But when they don’t run, debuggin’ ‘em is a pain. Here’s my approach.
Code Example:
# Edit cron jobs for current usercrontab -e# Schedule a cleanup at 2 AM daily0 2 * * * /opt/scripts/cleanup.sh >> /var/log/cleanup.log 2>&1# Debuggin’ a cron that ain’t runnin’# Check if cron even triedgrep CRON /var/log/syslog | tail -20# Run it like cron would (no fancy env vars)env -i HOME=/root PATH=/usr/bin:/bin bash /opt/scripts/cleanup.sh# Check the log outputtail -50 /var/log/cleanup.log
Debug Tip: Biggest cron fail I’ve seen is PATH issues. Cron don’t got your usual PATH, so commands flop. I always use full paths in cron scripts and log everythin’ with >> log 2>&1.
Live Coding Challenges: What to Expect On the Spot
Some companies, especially the big dogs in tech hubs, will throw ya into a live codin’ round. You’re sharin’ a terminal, and they wanna see ya write Bash scripts right then and there. Here are three common prompts I’ve come across.
Prompt 1: Check Disk Usage and Alert if Over 80%
Code Example:
#!/bin/bashset -euo pipefailTHRESHOLD=80df -h | awk 'NR>1 {gsub(/%/,"",$5); if($5+0 >= '$THRESHOLD') print "ALERT: "$6" is "$5"% full"}'
Talk It Out: I’d say, “I’m usin’ df -h to list disk usage, then pipin’ to awk to strip the percent sign and check if any partition’s over 80%. Skippin’ the header with NR>1 keeps it clean.”
Prompt 2: Write an Auto-Backup Script for Production
Code Example:
#!/bin/bashset -euo pipefailBACKUP_DIR=~/backups/$(date +%Y-%m-%d)SOURCES=("~/projects" "~/Documents")LOG="/var/log/backup.log"mkdir -p "$BACKUP_DIR"for SRC in "${SOURCES[@]}"; do SRC_EXPANDED=$(eval echo "$SRC") cp -r "$SRC_EXPANDED" "$BACKUP_DIR/" && echo "[$(date)] Backed up $SRC" >> "$LOG" || echo "[$(date)] FAILED: $SRC" >> "$LOG"doneecho "Backup done to $BACKUP_DIR"
Why It’s Better: I added an array for multiple sources and loggin’ for each step. If one fails, the rest still run.
Prompt 3: Check and Restart a Service if It’s Down
Code Example:
#!/bin/bashSERVICE="nginx"if systemctl is-active --quiet "$SERVICE"; then echo "$SERVICE is runnin’."else echo "$SERVICE is down. Restartin’..." systemctl restart "$SERVICE" sleep 2 if systemctl is-active --quiet "$SERVICE"; then echo "$SERVICE restarted fine." else echo "CRITICAL: $SERVICE won’t restart. Callin’ on-call." >&2 exit 1 fifi
Bonus: Add this to cron to check every 5 minutes: */5 * * * * /opt/scripts/watchdog.sh >> /var/log/watchdog.log 2>&1
Quick Cheat Sheet for Shell Script Concepts
Here’s a handy table to skim before your interview. Keep this in your back pocket for last-minute cramming!
| Concept | Syntax/Command | When to Use | Interview Level |
|---|---|---|---|
| Shebang | #!/bin/bash |
First line of every script | Beginner |
| Variables | NAME="value"; echo $NAME |
Store reusable stuff, always quote | Beginner |
| Conditionals | if [ "$VAR" = "x" ]; then |
Decision logic, use [[ ]] in Bash |
Beginner |
| For Loop | for i in list; do ... done |
Iterate over known lists | Intermediate |
| Functions | fname() { commands; } |
Reusable code blocks | Intermediate |
| Error Handling | set -Eeuo pipefail |
Every serious script | Intermediate |
| Trap | trap 'cleanup' EXIT ERR |
Cleanup or rollback on fail | Advanced |
| Cron Scheduling | 0 2 * * * /script.sh >> log 2>&1 |
Automate tasks, always log | Intermediate |
| awk/sed/grep | `awk ‘{print $2}’ | grep -v “error”` | Text processin’, log parsing |
FAQs: Stuff You’re Probably Wonderin’
Is Bash still a thing, or should I just learn Python?
Yo, Bash ain’t goin’ nowhere. It’s perfect for system-level automation—think cron jobs, startup scripts, Docker containers. Python’s great for fancier logic or data crunchin’, but Bash runs everywhere Linux does. Learn both, but start with Bash.
What’s the most important Bash trick for interviews?
Error handlin’, hands down. Know set -Eeuo pipefail and trap. Scripts that fail quietly can cause big messes, and interviewers wanna see you’re thinkin’ about that.
How many questions will I get in a Linux admin interview?
Expect 3–5 for a sysadmin gig, plus maybe a 20–30 minute live codin’ round if you’re aimin’ for senior DevOps or SRE spots. Big companies often throw in a practical scriptin’ test.
Wrap-Up: You’ve Got This, Champ!
Here’s the real talk—shell scriptin’ ain’t about bein’ a fancy programmer. It’s about refusin’ to do the same boring task twice. Every script you write saves ya time, and every one ya explain in an interview puts cash in your pocket. You’re already on your way to bein’ a shell scripter, even if ya don’t feel like it yet.
Master stuff like set -Eeuo pipefail, get cozy with special variables, and practice those live codin’ scripts till ya can do ‘em blindfolded. When that interviewer hands ya a terminal, just remember—I’ve been there, and you’ve got this. Go land that dream job, and let’s keep pushin’ your career to the next level!
Got more questions or wanna share how your interview went? Drop a comment below. We’re all in this together at our lil’ tech fam!

# What are BASH scripts and how would you create and execute one of them?
A Bash script is a text file containing commands for the Bash shell to execute. To create and execute a basic script, start by writing your script in a text editor:
The #!/bin/bash line tells the system to use the Bash shell to run the script, and echo outputs “Hello, World!” to the terminal. Save this file with a .sh extension, like script.sh.
Then, make the script executable with:
This command gives the file permission to be executed. Finally, run the script from the terminal with:
This command specifies that the script is in the current directory and should be executed, printing “Hello, World!” to the terminal.
#1 How do you schedule tasks using cron?
cron is a job scheduler that lets you run scripts at specified times or intervals.
You manage cron jobs using the crontab file, which lists the scheduled tasks.
For example
To edit the crontab file:
A cron job is defined by a line with five time fields followed by the command:
For example
This job runs a script every day at 5:00 AM:
cron is ideal for automating repetitive tasks, such as backups or system maintenance.