[Bash] Replace spazi da un path

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
pier_IP
Prode Principiante
Messaggi: 51
Iscrizione: sabato 17 ottobre 2009, 10:34
Contatti:

[Bash] Replace spazi da un path

Messaggio da pier_IP »

Ciao a tutti.
Ci sto sbattendo la testa da un po', non riesco a capire perchè non funziona.
Devo sostituire gli spazi di un path con uno "\ ", così lo script dovrebbe accettare anche path che contengono nomi di cartelle con lo spazio.

Codice: Seleziona tutto

nowPath=$(pwd)
echo ${nowpath//' '/'\ '}
Non mi restituisce niente!

Mentre con una stringa normale

Codice: Seleziona tutto

str="pippo e paperino"
echo ${str//' '/'\ '}
Restituisce correttamente pippo\ e\ paperino

Lo script ha il canonico #!/bin/bash in cima e lo eseguo con bash nomescript.sh

Qualcuno potrebbe aiutarmi? Grazie.


EDIT
Non è possibile, programmando da console funziona...

Codice: Seleziona tutto

pierprogramm@pierprogramm-MINT ~/Musica/American Head Charge $ str=$(pwd)
pierprogramm@pierprogramm-MINT ~/Musica/American Head Charge $ echo ${str//' '/'\ '}
/home/pierprogramm/Musica/American\ Head\ Charge
Aiuto utenti linux, esercizi svolti di matematica e teoria (statistica e analisi), strumenti matematici vari (scomposizione fattori primi, permutazioni, ...), progetti software didattici con documentazioni. Tutto qui : http://pierprogramm.altervista.org/wordpress
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: [Bash] Replace spazi da un path

Messaggio da crap0101 »

il primo esempio non funziona perchè

Codice: Seleziona tutto

nowPath != nowpath
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
pier_IP
Prode Principiante
Messaggi: 51
Iscrizione: sabato 17 ottobre 2009, 10:34
Contatti:

Re: [Bash] Replace spazi da un path

Messaggio da pier_IP »

Tu ci credi che non mi sono accorto della "p"?
Io non ci crederei.... Se non fosse vero.
Sarà il mio stato d'animo incazzato... O forse distrazione... O cecità... Mah... Vallo a capire il cervello a volte
Grazie
Aiuto utenti linux, esercizi svolti di matematica e teoria (statistica e analisi), strumenti matematici vari (scomposizione fattori primi, permutazioni, ...), progetti software didattici con documentazioni. Tutto qui : http://pierprogramm.altervista.org/wordpress
Avatar utente
vaeVictis
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4703
Iscrizione: venerdì 27 luglio 2012, 17:58
Desktop: Gnome
Distribuzione: Ubuntu 20.04 64bit

Re: [Bash] Replace spazi da un path

Messaggio da vaeVictis »

Hai anche (almeno) un'altra soluzione.
Consiste nel "quotare" le variabili che può contenere spazi:
1)
creo la directory con uno spazio nel nome

Codice: Seleziona tutto

vaevictis@HAL:~/Scrivania$ mkdir foo\ bar
vaevictis@HAL:~/Scrivania$ dirPath="foo bar"
2)
chiedo il listato del contenuto del path contenuto in dirPath, senza quotare la variabile, e ottengo degli errori

Codice: Seleziona tutto

vaevictis@HAL:~/Scrivania$ ls $dirPath
ls: impossibile accedere a foo: File o directory non esistente
ls: impossibile accedere a bar: File o directory non esistente
3)
invece quotando tutto funziona per bene

Codice: Seleziona tutto

vaevictis@HAL:~/Scrivania$ ls "$dirPath"
totale 0
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti