#!/bin/bash


# ideone boilerplate: run in temp dir
t=$(mktemp -d -t ideone.XXXXXXXX) || exit
# trap 'rm -rf "$t"' ERR EXIT
cd "$t"

touch one\ file two\ files unquoted\ \*
mkdir zzz

ls -l >&2

for [ z in `echo *` ]; do
    echo "$z"
done

if [ test -d $z ]; then
    echo "$z is a directory"
fi

trap 'rm -rf "$t"' ERR EXIT
exec >&2

echo ... You probably meant

for z in *; do
    echo "$z"
done
# ... or better yet
printf '%s\n' *

if [ -d "$z" ]; then
    echo "$z is a directory"
fi