Ho uno script che scp è un file dall'host remoto al locale. A volte i nomi dei file contengono spazi. scp non ama gli spazi nei nomi dei file. Per qualche motivo i miei tentativi di gestire gli spazi non hanno portato al percorso scp corretto.
Codice:
PATH=/var/root/Documents/MyFile OG-v1.2.3.pkg
scp $PATH [email protected]:/Users/Me/Desktop
Risultati in
Cannot find directory: var/root/Documents/MyFile
Cannot find directory: OG-v1.2.3.pkg
Racchiudendo PATH tra virgolette "$PATH"
dà lo stesso errore.
Anche lo scambio degli spazi con gli spazi sfuggiti non funziona, anche se per quanto posso dire dovrebbe:
ESC_PATH=${PATH/' '/' '}
sebbene la stampa del percorso di escape mostri che la modifica ha funzionato:
echo $ESC_PATH
> /var/root/Documents/MyFile OG-v1.2.3.pkg
Risposta accettata:
Dovresti citare sia la dichiarazione che l'utilizzo
path="/var/root/Documents/MyFile OG-v1.2.3.pkg"
scp "$path" [email protected]:/Users/Me/Desktop
Se non citi il primo, $path
conterrà solo la prima parte. Se non citi il secondo, scp
tratterà ogni parte separata da spazi come un argomento.
(Ho cambiato $PATH
a $path
perché $PATH
è un'importante variabile riservata e non devi usarla per scopi generali.)