GNU/Linux >> Linux Esercitazione >  >> Linux

Spazi per le variabili nello script Bash?

Ho uno spazio in uno dei nomi di directory. Voglio elencare un file sotto di esso da uno script bash. Ecco il mio copione:

fpath="${HOME}/"New Folder"/foobar.txt"

echo "fpath=(${fpath})"
#fpath="${HOME}/${fname}"

ls "${fpath}"

L'output di questo script è:

fpath=(/Users/<username>/"New Folder"/foobar.txt)
ls: /Users/<username>/"New Folder"/foobar.txt: No such file or directory

Ma quando è elencato il file sulla mia shell esiste:

$ ls /Users/<username>/"New Folder"/foobar.txt
/Users/<username>/New Folder/foobar.txt

C'è un modo per ottenere ls visualizzare il percorso dal mio script?

Risposta accettata:

Basta rimuovere le virgolette interne tra virgolette:

fpath="${HOME}/New Folder/foobar.txt"

Poiché il contenuto completo della variabile è contenuto tra virgolette, non è necessario farlo una seconda volta. Il motivo per cui funziona dalla CLI è che Bash valuta prima le virgolette. Non riesce nella variabile perché le virgolette con escape barra rovesciata vengono trattate come una parte letterale del percorso della directory.


Linux
  1. Come eseguire il debug di uno script Bash?

  2. Eof inaspettato mentre cerchi la corrispondenza """ - Script di Bash?

  3. Come sostituire gli spazi nei nomi dei file usando uno script bash

  4. Controllo delle variabili di ambiente

  5. Script bash:utilizzo del comando script da uno script bash per la registrazione di una sessione

Bash For Loop

35 Esempi di script Bash

Come eseguire uno script Bash

Script Bash per Loop spiegato con esempi

basename con spazi in uno script bash?

bash + leggi variabili e valori dal file tramite lo script bash