Dites-moi pourquoi ce script n'imprime pas les noms de fichiers dans le répertoire personnel.Script Shell: pour que la boucle n'imprime pas les fichiers
#!/bin/bash
d="$HOME"
for f in $d
do
echo "$f"
done
Dites-moi pourquoi ce script n'imprime pas les noms de fichiers dans le répertoire personnel.Script Shell: pour que la boucle n'imprime pas les fichiers
#!/bin/bash
d="$HOME"
for f in $d
do
echo "$f"
done
$HOME
élargit le répertoire personnel de l'utilisateur appelant, par exemple, /home/foobar
, donc la variable d
va juste contenir cette chaîne, pas ce qui est dans le répertoire.
Vous pouvez tirer parti d'un tableau:
#!/bin/bash
files=("$HOME"/*)
for f in "${files[@]}"; do
echo "$f"
done
Le tableau files
contiendra le nom du contenu à l'intérieur $HOME
"${files[@]}"
étend aux éléments du tableau files
, les citations sont important d'empêcher le fractionnement des mots, et l'expansion du chemin par shell
Nous itérez les éléments du tableau en utilisant une boucle for
Je suggère de remplacer 'd' de $ par' "$ d"/* '. – Cyrus