Interview › Scripting (Bash, Groovy)
How do you loop over files safely when names contain spaces? [Intermediate]
Answer
To loop over files safely, I use globs with quoted variables or find -print0 with read -d ''. This handles spaces, newlines, and special characters in filenames.
Technical explanation
Avoid for f in $(ls) because command substitution and word splitting corrupt filenames.
Use -- before filenames passed to commands so names beginning with - are not treated as options.
Enable nullglob if an unmatched glob should produce no items instead of the literal pattern.
Hands-on example
shopt -s nullglob
for file in ./*.log; do
gzip -- "$file"
done
find /var/log/myapp -type f -name '*.log' -print0 |
while IFS= read -r -d '' file; do
gzip -- "$file"
done
Check how well your resume matches the role with our free resume checker— match score, ATS check, and the skills you're missing.
More Scripting (Bash, Groovy) interview questions
- What is the purpose of the shebang line, and what does #!/bin/bash do? [Basic]
- What is the difference between sh and bash? [Basic]
- How do you make a script executable and run it? [Basic]
- What is the difference between running a script with ./script.sh, bash script.sh, and source script.sh? [Basic]
- What does sourcing a script do differently from executing it? [Basic]
- How do you declare a variable in Bash, and why are spaces around = not allowed? [Basic]
- What is the difference between $var and ${var}? [Basic]
- What is the difference between single quotes and double quotes in Bash? [Basic]