(6 réponses)
Fermé il y a 6 ans.
J'essaie d'échapper à l'espace pour un chemin dans Bash, mais ni l'utilisation d'une barre oblique inverse ni les guillemets ne fonctionnent.
Script .sh :
ROOT="/home/hogar/Documents/files/"
FILE=${ROOT}"bdd.encrypted"
DESTINATION="/home/hogar/Ubuntu\ One/folder"
mv ${FILE} ${DESTINATION}
Après avoir exécuté le script (./file
) voici le résultat :
mv: target 'One/folder' is not a directory
Pourquoi le mv
commande divise la chaîne, et comment puis-je empêcher que cela se produise ?
Réponse acceptée :
Vous développez la variable DESTINATION, si vous avez fait echo
voici ce que vous obtiendriez :
echo ${DESTINATION}
/home/hogar/Ubuntu\ One/folder
Mais mv
ne comprend pas :
mv ${FILE} ${DESTINATION}
mv: cannot move '/home/hogar/Documents/files/bdd.encrypted' to '/home/hogar/Ubuntu\\ One/folder': No such file or directory
(pour une raison quelconque, mon mv est plus verbeux)
Pour éviter cela, vous devez utiliser des guillemets :
mv "${FILE}" "${DESTINATION}"
Si vous n'avez pas besoin d'extension (puisque vous l'étiez déjà auparavant), utilisez simplement "$..."
devrait suffire :
mv "$FILE" "$DESTINATION"