Porque você não usou aspas simples ou duplas ao executar seu comando:
./command '*'
ou:
./command "*"
Ou, se você quiser usar o ./command *
, faça a seguinte modificação no seu script:
#!/bin/bash
for f in ./"$@"
do
echo $f
done
Isso porque $1
refere-se ao primeiro argumento do seu comando e $@
refere-se a todos os argumentos do seu comando.
Leia também alguma documentação neste sentido: link