I wanted to pass the path name to the script, but my path has spaces (eg. /Users/netto/iTunes \Media/Music/). I have tried putting the actual path directly on the for loop, and I was able to get all the files. Unfortunately, I could not pass it as variable. I have tried both double quote, and single quote. This is what I have currently
$PATH=$1
for f in $PATH; do
echo "Processing file $f "
done
Please let me know on how to do this. Thank you in advance.
Spaces in variables are expanded at command level, so to solve the problem you can either put quotation marks around "$1" (so spaces are properly escaped) or use bash arrays.
Here is two example that should work:
#!/bin/bash
DIR="$1"
for f in "$DIR"/*
do
echo "Processing file $f "
done
or using bash arrays:
#!/bin/bash
FILES=("$1"*)
for f in "${FILES[@]}"
do
echo "Processing file $f "
done
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With