GNU/Linux >> Linux Esercitazione >  >> Linux

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

Questa domanda ha già risposte qui :Perché il mio script di shell si blocca su spazi bianchi o altri caratteri speciali?

(6 risposte)
Chiuso 6 anni fa.

Sto cercando di sfuggire allo spazio char per un percorso in Bash, ma non funziona né l'utilizzo di una barra rovesciata né di virgolette.

Script .sh:

ROOT="/home/hogar/Documents/files/"
FILE=${ROOT}"bdd.encrypted"
DESTINATION="/home/hogar/Ubuntu\ One/folder"

mv ${FILE} ${DESTINATION}

Dopo aver eseguito lo script (./file ) questo è il risultato:

mv: target 'One/folder' is not a directory

Perché il mv comando divide la stringa e come posso impedire che ciò accada?

Risposta accettata:

Stai espandendo la variabile DESTINATION, se hai fatto echo questo è ciò che otterresti:

echo ${DESTINATION}
/home/hogar/Ubuntu\ One/folder

Ma mv non lo capisce:

mv ${FILE} ${DESTINATION}                                                
mv: cannot move '/home/hogar/Documents/files/bdd.encrypted' to '/home/hogar/Ubuntu\\ One/folder': No such file or directory

(per qualche motivo il mio mv è più dettagliato)

Per evitare ciò dovresti invece usare le virgolette:

mv "${FILE}" "${DESTINATION}"

Se non hai bisogno di espansione (dato che la stai già espandendo in precedenza), usa semplicemente "$..." dovrebbe essere sufficiente:

mv "$FILE" "$DESTINATION"

Linux
  1. Uno script Bash può essere agganciato a un file?

  2. Digitare -a sta dando un errore nello script?

  3. Script Bash per compilare un modello?

  4. Non riesco a capire questo script. Bash?

  5. Perché non riesco a ottenere l'output di Pgrep direttamente su variabile sullo script Bash?

35 Esempi di script Bash

Come eseguire uno script Bash

basename con spazi in uno script bash?

Perché cat /dev/urandom ha bloccato il mio script bash?

Corrispondenza del modello di script Bash

Esegui il comando bash sulla pipeline jenkins