Eu notei alguns erros no seu script:
Isso deve produzir o resultado que você está procurando:
#!/bin/bash
echo "Enter the source"
read SOURCE
echo "Enter the destination"
read DESTINATION
for file in $SOURCE/*; do
base='basename "${file}"'
letter=${base:0:1}
case $letter in
[a-f]) echo "A-F";
if [ -d "$DESTINATION/A-F" ]; then
echo "Moving file..."
mv $file "$DESTINATION/A-F"
else
mkdir -p "$DESTINATION/A-F";
fi
;;
[g-l]) echo "G-L"
if [ -d "$DESTINATION/G-L" ]; then
echo "Moving file..."
mv $file "$DESTINATION/G-L"
else
mkdir -p "$DESTINATION/G-L"
fi
;;
[m-r]) echo "M-R"
if [ -d "$DESTINATION/M-R" ]; then
echo "Moving file..."
mv $file "$DESTINATION/M-R"
else
mkdir -p "$DESTINATION/M-R"
fi
;;
[s-z]) echo "S-Z";
if [ -d "$DESTINATION/S-Z" ]; then
echo "Moving file..."
mv $file "$DESTINATION/S-Z"
else
mkdir -p "$DESTINATION/S-Z";
fi
;;
*) echo "-"
if [ -d "$DESTINATION/-" ]; then
echo "Moving file..."
mv $file "$DESTINATION/-"
else
mkdir -p "$DESTINATION/-";
fi
esac
done