Stop failing your bash scripts because a variable had a space in it
Shell Scripting / Bash Tricks
Stop failing your bash scripts because a variable had a space in it
🧩 The Challenge
You write a simple script to loop through filenames, but it blows up the second a file with a space in the name shows up. It’s infuriating when a perfectly fine script fails just because some user decided a filename should have spaces.
💡 The Fix
Switch your loops to use null-terminated strings instead of the default whitespace-delimited ones. This forces the shell to respect the full path regardless of how many spaces are hidden inside.
find . -maxdepth 1 -name "*.log" -print0 | while IFS= read -r -d '' file; do
echo "Processing $file"
done
⚙️ Why It Works
Setting IFS to an empty string tells read not to trim whitespace, and the -d ” flag handles the null delimiter emitted by -print0. Using this combination means you never have to worry about weird characters breaking your logic again.
🚀 Pro-Tip: Always use the -r flag with read unless you actually want backslashes to act as escape characters.
Linux Tips & Tricks | © ngelinux.com | 8/22/2026
