GNU/Linux >> Tutoriels Linux >  >> Linux

Pourquoi je ne peux pas échapper aux espaces sur un script bash ??

Cette question a déjà des réponses ici :Pourquoi mon script shell s'étouffe-t-il avec des espaces ou d'autres caractères spéciaux ?

(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"

Linux
  1. Pourquoi le script Bash ne reconnaît-il pas les alias ?

  2. Comment déboguer un script bash ?

  3. Typeset -a donne une erreur dans le script ?

  4. Pourquoi le script Bash ne se ferme-t-il pas après l'exécution ?

  5. Espaces pour les variables dans le script bash ?

35 exemples de scripts bash

Comment exécuter un script bash

Pourquoi Bash ne stocke-t-il pas les commandes commençant par des espaces ?

Impossible de comprendre ce script. Baiser ?

Comment remplacer les espaces dans les noms de fichiers à l'aide d'un script bash

Pourquoi cat /dev/urandom a suspendu mon script bash ?