jackoverfull Inviato 29 Aprile 2007 Segnala Condividi Inviato 29 Aprile 2007 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. 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… 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 Altre opzioni di condivisione...
Mang_ Inviato 30 Aprile 2007 Segnala Condividi Inviato 30 Aprile 2007 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 Altre opzioni di condivisione...
XIN Inviato 30 Aprile 2007 Segnala Condividi Inviato 30 Aprile 2007 jack >>> Chi NON saltava Winzozziano era...era!!! <<< Link al commento Condividi su altri siti Altre opzioni di condivisione...
MacMomo Inviato 30 Aprile 2007 Segnala Condividi Inviato 30 Aprile 2007 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! 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 Altre opzioni di condivisione...
jackoverfull Inviato 30 Aprile 2007 Autore Segnala Condividi Inviato 30 Aprile 2007 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! 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 Altre opzioni di condivisione...
Messaggi raccomandati
Archiviato
Questa discussione è archiviata e chiusa a future risposte.