GNU/Linux >> Linux Esercitazione >  >> Linux

Problemi nello script con spazi nel nome file?

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.)


Linux
  1. Registra il tuo terminale con script e scriptreplay

  2. Perché non riesco a sfuggire agli spazi su uno script Bash??

  3. Aggiunta di timestamp a un nome file con mv in BASH

  4. sed inserisce una riga con spazi in una riga specifica

  5. scp da Linux remoto a Windows locale con spazi nel percorso locale

Automatizza l'elaborazione delle immagini con questo script Bash

Come scrivere uno script Bash con esempi

Come faccio a sfuggire agli spazi nei percorsi per Scp in Linux?

Come rimuovere gli spazi dai nomi dei file in Linux

non può generare lo script in una directory corrente

Directory di modifica dello script Shell con variabile