J'ai un script qui scp est un fichier de l'hôte distant vers le local. Parfois, les noms de fichiers contiennent des espaces. scp n'aime pas les espaces dans ses noms de fichiers. Pour une raison quelconque, mes tentatives de gestion des espaces n'ont pas abouti au bon chemin scp.
Code :
PATH=/var/root/Documents/MyFile OG-v1.2.3.pkg
scp $PATH [email protected]:/Users/Me/Desktop
Résultats en
Cannot find directory: var/root/Documents/MyFile
Cannot find directory: OG-v1.2.3.pkg
Mettre PATH entre guillemets "$PATH"
donne la même erreur.
Échanger les espaces pour les espaces échappés ne fonctionne pas non plus, bien que pour autant que je sache, cela devrait :
ESC_PATH=${PATH/' '/' '}
bien que l'impression du chemin échappé montre que la modification a fonctionné :
echo $ESC_PATH
> /var/root/Documents/MyFile OG-v1.2.3.pkg
Réponse acceptée :
Vous devez citer à la fois la déclaration et l'utilisation
path="/var/root/Documents/MyFile OG-v1.2.3.pkg"
scp "$path" [email protected]:/Users/Me/Desktop
Si vous ne citez pas le premier, $path
ne contiendra que la première partie. Si vous ne citez pas le second, scp
traitera chaque partie séparée par un espace comme un argument.
(J'ai changé $PATH
vers $path
car $PATH
est une variable réservée importante et vous ne devez pas l'utiliser à des fins générales.)