[Risolto][Bash] Assegnare variabile con spazi e apostrofi
- Mr Ferryman
- Prode Principiante
- Messaggi: 148
- Iscrizione: venerdì 23 gennaio 2015, 1:13
- Desktop: GNOME
- Distribuzione: Ubuntu 14.04 LTS x86_64
- Sesso: Maschile
[Risolto][Bash] Assegnare variabile con spazi e apostrofi
Ciao, dovrei assegnare una variabile col path e nome di un font da installare ma il nome del font contiene spazi e apostrofi e di conseguenza mi da errore nel caricare il file.
Il nome del font da installare per esempio è : Martin Vogel's Symbols.ttf
ma quando assegno come variabile per esempio:
font=" /root/Desktop/myfonts/Martin Vogel's Symbols.ttf " ovviamente mi da l'errore e se metto gli apostrofi ' ' mi da errore perchè la parola Vagel's contiene l'apostrofo.
Come posso assegnare quel file ad una variabile?
Grazie
Il nome del font da installare per esempio è : Martin Vogel's Symbols.ttf
ma quando assegno come variabile per esempio:
font=" /root/Desktop/myfonts/Martin Vogel's Symbols.ttf " ovviamente mi da l'errore e se metto gli apostrofi ' ' mi da errore perchè la parola Vagel's contiene l'apostrofo.
Come posso assegnare quel file ad una variabile?
Grazie
Ultima modifica di Mr Ferryman il sabato 28 febbraio 2015, 18:34, modificato 1 volta in totale.
Tutto ciò che pensiamo rappresenta esattamente quello che siamo.
Solo quando avremo la piena consapevolezza di essere dei privilegiati nel vivere questa vita avremo finalmente rispetto per il prossimo e per la vita stessa ... solo allora ci renderemo conto che sarà troppo tardi.
Solo quando avremo la piena consapevolezza di essere dei privilegiati nel vivere questa vita avremo finalmente rispetto per il prossimo e per la vita stessa ... solo allora ci renderemo conto che sarà troppo tardi.
-
- Entusiasta Emergente
- Messaggi: 1506
- Iscrizione: mercoledì 22 dicembre 2010, 18:09
- Desktop: Unity
- Distribuzione: Ubuntu 14.04.1 LTS 64bit
- Località: Verona
Re: [Bash] Assegnare variabile con spazi e apostrofi
Ciao! Premesso che usare spazi e caratteri speciali nei nomi è una cosa che andrebbe evitata come la peste, quando dici
Morale: il problema non è nell'assegnamento, ma (suppongo) nell'uso che ne fai dopo.
Che errore ti dà? E con quale comando?
non vedo dove sia il problema:Mr Ferryman ha scritto:ma quando assegno come variabile per esempio:
font=" /root/Desktop/myfonts/Martin Vogel's Symbols.ttf " ovviamente mi da l'errore
Codice: Seleziona tutto
mattia@alien:~$ font="/root/Desktop/myfonts/Martin Vogel's Symbols.ttf"
mattia@alien:~$ echo $font
/root/Desktop/myfonts/Martin Vogel's Symbols.ttf
mattia@alien:~$
Che errore ti dà? E con quale comando?
"I find your lack of faith disturbing."
- Mr Ferryman
- Prode Principiante
- Messaggi: 148
- Iscrizione: venerdì 23 gennaio 2015, 1:13
- Desktop: GNOME
- Distribuzione: Ubuntu 14.04 LTS x86_64
- Sesso: Maschile
Re: [Bash] Assegnare variabile con spazi e apostrofi
Ciao @1001001, grazie intanto per l'intervento
Il comando da eseguire è un semplice cp, in realtà la variabile è composta da più di un font che devono essere copiati in un path assegnato ad un altra variabile.
in questo modo mi restituisce:
dove sbaglio?
[EDIT]
In pratica nonostante l'errore
mi copia solo i fonts che non contengono spazi nel nome mentre quei tre che hanno spazi non li copia
[/EDIT]
Il comando da eseguire è un semplice cp, in realtà la variabile è composta da più di un font che devono essere copiati in un path assegnato ad un altra variabile.
Codice: Seleziona tutto
#!/bin/bash
MYFONTS="/root/Desktop/PostSetup/FileSetup/myfonts/ConkySymbols.ttf
/root/Desktop/PostSetup/FileSetup/myfonts/PizzaDude Bullets.ttf
/root/Desktop/PostSetup/FileSetup/myfonts/Weather.ttf
/root/Desktop/PostSetup/FileSetup/myfonts/Poky.ttf
/root/Desktop/PostSetup/FileSetup/myfonts/Martin Vogel's Symbols.ttf
/root/Desktop/PostSetup/FileSetup/myfonts/StyleBats.ttf
/root/Desktop/PostSetup/FileSetup/myfonts/OpenLogos.ttf
/root/Desktop/PostSetup/FileSetup/myfonts/VariShapes Solid.ttf "
TRUE="/media/Volume/Tools/CANTIERE/grubo"
cp -r $MYFONTS $TRUE
sleep 5
Codice: Seleziona tutto
cp: impossibile eseguire stat di "/root/Desktop/PostSetup/FileSetup/myfonts/PizzaDude": No such file or directory
cp: impossibile eseguire stat di "Bullets.ttf": No such file or directory
cp: impossibile eseguire stat di "/root/Desktop/PostSetup/FileSetup/myfonts/Martin": No such file or directory
cp: impossibile eseguire stat di "Vogel's": No such file or directory
cp: impossibile eseguire stat di "Symbols.ttf": No such file or directory
cp: impossibile eseguire stat di "/root/Desktop/PostSetup/FileSetup/myfonts/VariShapes": No such file or directory
cp: impossibile eseguire stat di "Solid.ttf": No such file or directory
[EDIT]
In pratica nonostante l'errore
mi copia solo i fonts che non contengono spazi nel nome mentre quei tre che hanno spazi non li copia
[/EDIT]
Tutto ciò che pensiamo rappresenta esattamente quello che siamo.
Solo quando avremo la piena consapevolezza di essere dei privilegiati nel vivere questa vita avremo finalmente rispetto per il prossimo e per la vita stessa ... solo allora ci renderemo conto che sarà troppo tardi.
Solo quando avremo la piena consapevolezza di essere dei privilegiati nel vivere questa vita avremo finalmente rispetto per il prossimo e per la vita stessa ... solo allora ci renderemo conto che sarà troppo tardi.
-
- Entusiasta Emergente
- Messaggi: 1506
- Iscrizione: mercoledì 22 dicembre 2010, 18:09
- Desktop: Unity
- Distribuzione: Ubuntu 14.04.1 LTS 64bit
- Località: Verona
Re: [Bash] Assegnare variabile con spazi e apostrofi
Ah, certo, se nella variabile hai più di un file la presenza degli spazi rende tutto più complicato. La cosa più facile è usare find:
questo copia tutti i file contenuti in /root/Desktop/PostSetup/FileSetup/myfonts/ . Se ti serve un controllo più fine dimmi quali file vuoi copiare.
Se invece i file che vuoi copiare sono esattamente quelli della variable e sono in qualche modo definiti all'interno dello script dovremo usare un ciclo. Insomma, 'sti file con quale logica sono presi?
Codice: Seleziona tutto
find DIRECTORY_FONTS -type f -print0 | xargs -0 cp -t DIRECTORY_DESTINAZIONE
Se invece i file che vuoi copiare sono esattamente quelli della variable e sono in qualche modo definiti all'interno dello script dovremo usare un ciclo. Insomma, 'sti file con quale logica sono presi?
"I find your lack of faith disturbing."
- Mr Ferryman
- Prode Principiante
- Messaggi: 148
- Iscrizione: venerdì 23 gennaio 2015, 1:13
- Desktop: GNOME
- Distribuzione: Ubuntu 14.04 LTS x86_64
- Sesso: Maschile
Re: [Bash] Assegnare variabile con spazi e apostrofi
Non so se il comando echo restituisca una cosa diversa dal comando cp in ogni caso facendo come dici te ottengo come errore questo:
e nella cartella di destinazione mi copia i 5 file senza spazi + l'intera cartella con tutti i fonts
Ho spostato i tre fonts con spazi nel nome alla fine per individuarli meglio (sono gli ultimi 3)
Codice: Seleziona tutto
cp: impossibile eseguire stat di "/root/Desktop/PostSetup/FileSetup/myfonts/PizzaDude": No such file or directory
cp: impossibile eseguire stat di "Bullets.ttf": No such file or directory
cp: impossibile eseguire stat di "/root/Desktop/PostSetup/FileSetup/myfonts/Martin": No such file or directory
cp: impossibile eseguire stat di "Vogel's": No such file or directory
cp: impossibile eseguire stat di "Symbols.ttf": No such file or directory
cp: impossibile eseguire stat di "VariShapes": No such file or directory
cp: impossibile eseguire stat di "Solid.ttf": No such file or directory
cp: impossibile eseguire stat di "\\": No such file or directory
Ho spostato i tre fonts con spazi nel nome alla fine per individuarli meglio (sono gli ultimi 3)
Codice: Seleziona tutto
#!/bin/bash
MYFONTS1="/root/Desktop/PostSetup/FileSetup/myfonts/ConkySymbols.ttf
/root/Desktop/PostSetup/FileSetup/myfonts/Weather.ttf
/root/Desktop/PostSetup/FileSetup/myfonts/Poky.ttf
/root/Desktop/PostSetup/FileSetup/myfonts/StyleBats.ttf
/root/Desktop/PostSetup/FileSetup/myfonts/OpenLogos.ttf
/root/Desktop/PostSetup/FileSetup/myfonts/PizzaDude Bullets.ttf \
/root/Desktop/PostSetup/FileSetup/myfonts/Martin Vogel's Symbols.ttf \
/root/Desktop/PostSetup/FileSetup/myfonts/ VariShapes Solid.ttf \ "
TRUE="/media/Volume/Tools/CANTIERE/grubo"
cp -r $MYFONTS1 $TRUE
sleep 5
Tutto ciò che pensiamo rappresenta esattamente quello che siamo.
Solo quando avremo la piena consapevolezza di essere dei privilegiati nel vivere questa vita avremo finalmente rispetto per il prossimo e per la vita stessa ... solo allora ci renderemo conto che sarà troppo tardi.
Solo quando avremo la piena consapevolezza di essere dei privilegiati nel vivere questa vita avremo finalmente rispetto per il prossimo e per la vita stessa ... solo allora ci renderemo conto che sarà troppo tardi.
-
- Entusiasta Emergente
- Messaggi: 1506
- Iscrizione: mercoledì 22 dicembre 2010, 18:09
- Desktop: Unity
- Distribuzione: Ubuntu 14.04.1 LTS 64bit
- Località: Verona
Re: [Bash] Assegnare variabile con spazi e apostrofi
Scusa, avevo scritto una cavolata, ma poi ho modificato subito il messaggio, speravo che non l'avessi visto dato che non eri in linea
Prova a vedere quello che ho scritto sopra
Prova a vedere quello che ho scritto sopra
"I find your lack of faith disturbing."
- Mr Ferryman
- Prode Principiante
- Messaggi: 148
- Iscrizione: venerdì 23 gennaio 2015, 1:13
- Desktop: GNOME
- Distribuzione: Ubuntu 14.04 LTS x86_64
- Sesso: Maschile
Re: [Bash] Assegnare variabile con spazi e apostrofi
I file sono quegli 8 fonts che devono essere copiati da una cartella ad un altra prima di essere installati , all'interno della cartella dei fonts da copiare c'è solo un file di testo con degli appunti nient'altro.1001001 [url=http://forum.ubuntu-it.org/viewtopic.php?p=4728059#p4728059][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Ah, certo, se nella variabile hai più di un file la presenza degli spazi rende tutto più complicato. La cosa più facile è usare find:questo copia tutti i file contenuti in /root/Desktop/PostSetup/FileSetup/myfonts/ . Se ti serve un controllo più fine dimmi quali file vuoi copiare.Codice: Seleziona tutto
find DIRECTORY_FONTS -type f -print0 | xargs -0 cp -t DIRECTORY_DESTINAZIONE
Se invece i file che vuoi copiare sono esattamente quelli della variable e sono in qualche modo definiti all'interno dello script dovremo usare un ciclo. Insomma, 'sti file con quale logica sono presi?
Ho provato anche ad usare 4 diverse variabili; Variabile1 per l'elenco dei fonts senza spazi nel nome e variabile2, variabile3 e variabile4 una per ogni font che contiene spazi nel nome, MA anche così non funziona.
[edit]
OK allora con "find" riesco a copiare tutti i fonts nella cartella di destinazione e in parte risolvo il problema se non fosse che mi copia anche quel file di testo.txt.
Ora, se c'è una possibilità di escludere quel file dalla lista dei file da copiare, senza crearti troppo ed ulteriore disturbo, sarebbe perfetto altrimenti sposto quel file da un altra parte e metto risolto
In ogni caso ti ringrazio tantissimo .. con una sola riga evito variabili e snellisco lo script.
[/edit]
Ultima modifica di Mr Ferryman il sabato 28 febbraio 2015, 18:20, modificato 1 volta in totale.
Tutto ciò che pensiamo rappresenta esattamente quello che siamo.
Solo quando avremo la piena consapevolezza di essere dei privilegiati nel vivere questa vita avremo finalmente rispetto per il prossimo e per la vita stessa ... solo allora ci renderemo conto che sarà troppo tardi.
Solo quando avremo la piena consapevolezza di essere dei privilegiati nel vivere questa vita avremo finalmente rispetto per il prossimo e per la vita stessa ... solo allora ci renderemo conto che sarà troppo tardi.
-
- Entusiasta Emergente
- Messaggi: 1506
- Iscrizione: mercoledì 22 dicembre 2010, 18:09
- Desktop: Unity
- Distribuzione: Ubuntu 14.04.1 LTS 64bit
- Località: Verona
Re: [Bash] Assegnare variabile con spazi e apostrofi
Ok, porta pazienza, non so cosa avevo in testa. Fai così:
Esempio:
EDIT
visto adesso il tuo edit
Se vuoi copiare tutto tranne il file .txt puoi fare
Esempio:
Scusami per il casino!!
Codice: Seleziona tutto
echo "$FONTS" | while read filename; do cp "$filename" dest; done
Codice: Seleziona tutto
mattia@alien:tmp$ ls -l
totale 4
-rw-rw-r-- 1 mattia mattia 0 feb 28 18:11 ConkySymbols.ttf
drwxrwxr-x 2 mattia mattia 4096 feb 28 18:18 dest
-rw-rw-r-- 1 mattia mattia 0 feb 28 18:11 PizzaDude Bullets.ttf
mattia@alien:tmp$ ls -l dest/
totale 0
mattia@alien:tmp$ FONTS="ConkySymbols.ttf
PizzaDude Bullets.ttf"
mattia@alien:tmp$ echo "$FONTS" | while read filename; do cp "$filename" dest; done
mattia@alien:tmp$ ls -l
totale 4
-rw-rw-r-- 1 mattia mattia 0 feb 28 18:11 ConkySymbols.ttf
drwxrwxr-x 2 mattia mattia 4096 feb 28 18:19 dest
-rw-rw-r-- 1 mattia mattia 0 feb 28 18:11 PizzaDude Bullets.ttf
mattia@alien:tmp$ ls -l dest/
totale 0
-rw-rw-r-- 1 mattia mattia 0 feb 28 18:19 ConkySymbols.ttf
-rw-rw-r-- 1 mattia mattia 0 feb 28 18:19 PizzaDude Bullets.ttf
mattia@alien:tmp$
visto adesso il tuo edit
Se vuoi copiare tutto tranne il file .txt puoi fare
Codice: Seleziona tutto
find DIRECTORY_FONTS -type f ! -name "*.txt" -print0 | xargs -0 cp -t DIRECTORY_DESTINAZIONE
Codice: Seleziona tutto
mattia@alien:tmp$ ls -l
totale 4
-rw-rw-r-- 1 mattia mattia 0 feb 28 18:22 a.txt
-rw-rw-r-- 1 mattia mattia 0 feb 28 18:11 ConkySymbols.ttf
drwxrwxr-x 2 mattia mattia 4096 feb 28 18:21 dest
-rw-rw-r-- 1 mattia mattia 0 feb 28 18:11 PizzaDude Bullets.ttf
mattia@alien:tmp$ ls -l dest/
totale 0
mattia@alien:tmp$ ls -l dest/^C
mattia@alien:tmp$ find . -type f ! -name "*.txt" -print0 | xargs -0 cp -t dest/
mattia@alien:tmp$ ls -l
totale 4
-rw-rw-r-- 1 mattia mattia 0 feb 28 18:22 a.txt
-rw-rw-r-- 1 mattia mattia 0 feb 28 18:11 ConkySymbols.ttf
drwxrwxr-x 2 mattia mattia 4096 feb 28 18:22 dest
-rw-rw-r-- 1 mattia mattia 0 feb 28 18:11 PizzaDude Bullets.ttf
mattia@alien:tmp$ ls -l dest/
totale 0
-rw-rw-r-- 1 mattia mattia 0 feb 28 18:22 ConkySymbols.ttf
-rw-rw-r-- 1 mattia mattia 0 feb 28 18:22 PizzaDude Bullets.ttf
mattia@alien:tmp$
"I find your lack of faith disturbing."
- Mr Ferryman
- Prode Principiante
- Messaggi: 148
- Iscrizione: venerdì 23 gennaio 2015, 1:13
- Desktop: GNOME
- Distribuzione: Ubuntu 14.04 LTS x86_64
- Sesso: Maschile
Re: [Bash] Assegnare variabile con spazi e apostrofi
Credo che ormai ci siamo solo che mi sono sbagliato su una cosa e cioè sul fatto che quel file di testo non ha estensione.txt e di conseguenza lo copia lo stesso .
è un file che si chiama "Leggimi" ma non ha estensione
[edit]
OK RISOLTO
ho cambiato "*.txt" in "Leggimi" e ora copia tutto tranne il file di testo
Ancora grazie 1000 metto risolto
[/edit]
è un file che si chiama "Leggimi" ma non ha estensione
[edit]
OK RISOLTO
ho cambiato "*.txt" in "Leggimi" e ora copia tutto tranne il file di testo
Ancora grazie 1000 metto risolto
[/edit]
Tutto ciò che pensiamo rappresenta esattamente quello che siamo.
Solo quando avremo la piena consapevolezza di essere dei privilegiati nel vivere questa vita avremo finalmente rispetto per il prossimo e per la vita stessa ... solo allora ci renderemo conto che sarà troppo tardi.
Solo quando avremo la piena consapevolezza di essere dei privilegiati nel vivere questa vita avremo finalmente rispetto per il prossimo e per la vita stessa ... solo allora ci renderemo conto che sarà troppo tardi.
-
- Entusiasta Emergente
- Messaggi: 1506
- Iscrizione: mercoledì 22 dicembre 2010, 18:09
- Desktop: Unity
- Distribuzione: Ubuntu 14.04.1 LTS 64bit
- Località: Verona
Re: [Bash] Assegnare variabile con spazi e apostrofi
Di nulla!
Ciao!
Ciao!
"I find your lack of faith disturbing."
-
- Imperturbabile Insigne
- Messaggi: 2848
- Iscrizione: domenica 11 maggio 2008, 18:03
- Desktop: plasma
- Distribuzione: 22.04
- Località: Palermo
Re: [Risolto][Bash] Assegnare variabile con spazi e apostrof
dato che sai a priori l'estensione dei file da copiare potrebbe essere ancora più semplce:
Codice: Seleziona tutto
find DIRECTORY_FONTS -iname "*.ttf" -print0 | xargs -0 cp -t DIRECTORY_DESTINAZIONE
-
- Entusiasta Emergente
- Messaggi: 1506
- Iscrizione: mercoledì 22 dicembre 2010, 18:09
- Desktop: Unity
- Distribuzione: Ubuntu 14.04.1 LTS 64bit
- Località: Verona
Re: [Risolto][Bash] Assegnare variabile con spazi e apostrof
Giusto! Non lo volevo dare per scontato (anche se nell'esempio è così), ma se i file hanno effettivamente tutti estensione uguale il comando di rai è il più appropriato
"I find your lack of faith disturbing."
- Mr Ferryman
- Prode Principiante
- Messaggi: 148
- Iscrizione: venerdì 23 gennaio 2015, 1:13
- Desktop: GNOME
- Distribuzione: Ubuntu 14.04 LTS x86_64
- Sesso: Maschile
Re: [Risolto][Bash] Assegnare variabile con spazi e apostrof
Ottimo davvero mi tornerà utile sia ora che sicuramente in futuro
Grazie
Grazie
Tutto ciò che pensiamo rappresenta esattamente quello che siamo.
Solo quando avremo la piena consapevolezza di essere dei privilegiati nel vivere questa vita avremo finalmente rispetto per il prossimo e per la vita stessa ... solo allora ci renderemo conto che sarà troppo tardi.
Solo quando avremo la piena consapevolezza di essere dei privilegiati nel vivere questa vita avremo finalmente rispetto per il prossimo e per la vita stessa ... solo allora ci renderemo conto che sarà troppo tardi.
- Mr Ferryman
- Prode Principiante
- Messaggi: 148
- Iscrizione: venerdì 23 gennaio 2015, 1:13
- Desktop: GNOME
- Distribuzione: Ubuntu 14.04 LTS x86_64
- Sesso: Maschile
Re: [Risolto][Bash] Assegnare variabile con spazi e apostrof
Provando ora il tuo comando mi restituisce questo errore:rai [url=http://forum.ubuntu-it.org/viewtopic.php?p=4728102#p4728102][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:dato che sai a priori l'estensione dei file da copiare potrebbe essere ancora più semplce:Codice: Seleziona tutto
find DIRECTORY_FONTS -iname "*.ttf" -print0 | xargs -0 cp -t DIRECTORY_DESTINAZIONE
Codice: Seleziona tutto
cp: manca il file operando
Usare «cp --help» per ulteriori informazioni.
[edit]
come non detto scusami ho fatto io una cappella ... avevo dimenticato di togliere una lettera dal testo scritto in precedenza tra le ""
[/edit]
Tutto ciò che pensiamo rappresenta esattamente quello che siamo.
Solo quando avremo la piena consapevolezza di essere dei privilegiati nel vivere questa vita avremo finalmente rispetto per il prossimo e per la vita stessa ... solo allora ci renderemo conto che sarà troppo tardi.
Solo quando avremo la piena consapevolezza di essere dei privilegiati nel vivere questa vita avremo finalmente rispetto per il prossimo e per la vita stessa ... solo allora ci renderemo conto che sarà troppo tardi.
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 14 ospiti