Vai al contenuto

bash scripting: maledetti siano gli spazi...


Messaggi raccomandati

ciao a tutti, sto cercando di fare uno script che prenda dei pacchetti di installazione apple (i .pkg/.mpkg, per intenderci…) e li installi in un determinato disco (o cartella).

sono, dopo un po' di lavoro, arrivato a qualcosa di funzionante, ma, tanto per cambiare, gli spazi e i caratteri speciali si sono messi in mezzo: se il path del file in questione contiene spazi lo script non funziona. :ciao:

ora sto cercando di risolvere questo problema, avevo pansato a sed, ma ancora non sono riuscito a far nulla e, francamente, non so più dove battere la testa…

questo è lo script com'è adesso (ovviamente fa parte di uno script molto più grosso, lo ho estratto…):

echo inserisci il target
read target

echo inserisci i pacchetti
read addPKGs

if ! [ -s "$addPKGs" ]; then
   echo "installing additional packages, please wait." 

   # fixing the spaces. maybe there is a better way to do this, but this should work.
   addPKGs="\"$addPKGs"
   addPKGs=`echo $addPKGs | sed -e 's/ /'posxspacefixer'/g'`
   addPKGs=`echo $addPKGs | sed -e 's/pkg\/posxspacefixer/'pkg\"\ \"'/g'`
   addPKGs="$addPKGs""\""

   # installing...
   for item in $addPKGs; do
       instpkg=`echo $item | sed -e 's/posxspacefixer/'\ '/g'`
       sudo installer -verboseR -pkg "$instpkg" -target "$target"
   done
fi

e questo è ciò che ottengo:

installer: Error the package path specified was invalid: '"/Users/jack/Desktop/Il pacchetto.pkg"'.

inutile dire che "/Users/jack/Desktop/Il pacchetto.pkg" esiste eccome e che passandolo manualmente ad installer funziona… :ciao:

se rimuovo le virgolette da "$instpkg", così

        sudo installer -verboseR -pkg $instpkg -target "$target"

chiaramente "pacchetto" viene interpretato come argomento…

qualche idea?

"Errore di configurazione di Windows: mouse e tastiera scollegati. Premere F1 per riavviare."

"Assimilation is futile: Microsoft delenda est!"

6/6/2005: è l'inizio della fine.

Home Page | multiXFinder | OpenArena | SuspendNow!

Link al commento
Condividi su altri siti

Si, metti la \ prima dello spazio!

ACSP dal 01/06/2011

ACTC dal 23/01/2012

Apple quasi mai inventa l'acqua calda.

La mette solo dentro ad un tubo che finisce con un innaffiatoio e rende più facile e bello farsi la doccia!

Link al commento
Condividi su altri siti

Scusa, io non conosco proprio bene il bash scripting, ma non ho capito una cosa:

A che serve l'argomento -e in sed?

E perché metti gli apici dopo questo per racchiudere l'espressione e all'interno di questa rimetti gli apici solo per racchiudere seconda la parola? (che se non sbaglio dovrebbe essere quella che sostituisce la prima).

La sintassi che conoscevo io (ma ripeto non ho molte esperienze a riguardo) era così:

sed s/'trova'/'cambia'/g

Dove la prima parola è quella trovata e la seconda quella sostituita, e gli apici dovrebbero far si che non diano errore i caratteri particolari.

Non so se può esserti d'aiuto, vedi tu...

Ciao! :ciao:

Marco - Gallery

MacBook Nero 2.2 GHz Intel Core 2 Duo - 4 GB RAM - Mac OS X 10.6 Snow Leopard

Link al commento
Condividi su altri siti

Si, metti la \ prima dello spazio!

dove? mi pare che ci sia…

Scusa, io non conosco proprio bene il bash scripting, ma non ho capito una cosa:

A che serve l'argomento -e in sed?

non ne sono certo, ma credo che serva a fargli prendere il "g" (che sostituisce tutte le ricorrenze).

E perché metti gli apici dopo questo per racchiudere l'espressione e all'interno di questa rimetti gli apici solo per racchiudere seconda la parola? (che se non sbaglio dovrebbe essere quella che sostituisce la prima).

La sintassi che conoscevo io (ma ripeto non ho molte esperienze a riguardo) era così:

sed s/'trova'/'cambia'/g

Dove la prima parola è quella trovata e la seconda quella sostituita, e gli apici dovrebbero far si che non diano errore i caratteri particolari.

Non so se può esserti d'aiuto, vedi tu...

Ciao! :shock:

effettivamente è un po' illogico, ma è uguale, non cambia…

"Errore di configurazione di Windows: mouse e tastiera scollegati. Premere F1 per riavviare."

"Assimilation is futile: Microsoft delenda est!"

6/6/2005: è l'inizio della fine.

Home Page | multiXFinder | OpenArena | SuspendNow!

Link al commento
Condividi su altri siti

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...