Je suis assez nouveau dans les scripts Bash. J'ai un "script de test", que j'ai utilisé comme base pour un script plus avancé / utile:
#!/bin/bash
files=$1
for a in $files
do
echo "$a"
done
Lorsque j'appelle cela sans guillemets, il prend simplement un fichier dans un répertoire:
testscript *.txt
Mais quand je l'appelle avec des guillemets, cela fonctionne correctement et sélectionne tous les fichiers texte:
testscript '*.txt'
Qu'est-ce qui se passe ici?
for a in "$@"; do
(oufor a; do
) dans votre script, laissant ainsi le globbing au shell externe, et non de laisser de côté les guillemets.