A condição em if
está incorreta, você está apenas verificando se a string $file=*.c
não está vazia. Tente em vez disso:
#!/bin/sh
clear
for file in *
do
if [ "$file" = "*.c" ]
then
echo "$file"
fi
done
exit 0
Por outro lado, o caracter comod '*' neste caso não é funcional, mas é interpretado como uma string.
Tente:
#!/bin/sh
clear
for file in *.c
do
echo "$file"
done
exit 0