La variable que vous voulez est en effet [email protected]
- ceci contient tous les arguments de ligne de commande en tant que mots séparés, chacun transmis intact (pas d'expansion). ($*
les traite tous comme un seul mot - bonne chance de le trier si vous avez des espaces dans les noms de fichiers).
Vous pouvez boucler, si vous le souhaitez. Ceci est facilement étendu à des actions plus complexes que ls
.
for file in "[email protected]"; do
if [ -f "$file" ]; then
ls -l "$file"
fi
done
Note: vous devez citer [email protected]
pour protéger les caractères spéciaux à l'intérieur! Vous devriez également citer $file
pour la même raison - en particulier dans le test. S'il y a une chaîne vide dans [email protected]
, file
sera également vide, et sans guillemets, -f essayera d'agir sur le ']'. Des erreurs s'ensuivent.
De plus, si tout ce que vous devez faire est ls
(sauter votre if
) vous pouvez simplement faire ceci:
ls -l "[email protected]"
Je suis intrigué, cela semble étroitement lié à certaines de vos autres questions - vous voulez donner plus de fond? –