PDA

View Full Version : Help su shell script: caratteri speciali


avastreg
09-08-2008, 19:34
Ciao ragazzi,

stavo realizzando uno script che mi chiama sed e modifica alcune cose all'interno di un file.



#!/bin/sh

$ip = "ip di esempio";

sed -e 's/^bind.*$/bind-address = $ip/' newFile > newFileTemp



Il punto è che questo script non si può eseguire correttamente a causa del carattere = presente nel comando del sed.

Come posso fare affinchè sh lo ignori e mi esegua correttamente quel sed?? :muro:

Grazie in anticipo :)

VICIUS
09-08-2008, 19:51
Puoi usare \ davanti al simbolo speciale di turno per fare si che questo sia interpretato come un normale carattere.

avastreg
09-08-2008, 22:16
avevo già provato con lo slash, senza nessun risultato; infatti facendo cosi

sed -e 's/^bind.*$/bind-address \= $ip/' newFile > newFileTemp

continua a darmi questo errore:

./testScript: line 3: =: command not found

la linea 3 è quella del sed.

Altre proposte?

Gimli[2BV!2B]
09-08-2008, 23:06
Occhio alla dichiarazione della variabile:
#!/bin/sh

IP="ip di esempio"

sed -e 's/^bind.*$/bind-address = $IP/' newFile > newFileTemp
Così non da errori, ma naturalmente non posso provare se funziona l'espressione del sed, visto che non ho il file.

avastreg
10-08-2008, 10:34
;23643898']Occhio alla dichiarazione della variabile:
#!/bin/sh

IP="ip di esempio"

sed -e 's/^bind.*$/bind-address = $IP/' newFile > newFileTemp
Così non da errori, ma naturalmente non posso provare se funziona l'espressione del sed, visto che non ho il file.

grazie! ora non da più errore, il sed l'avevo già testato preventivamente a parte :P

però nel file nuovo creato (newFileTemp) mi scrive direttamente $IP e non il contenuto della variabile (cioè nell'esempio "ip di esempio"), perchè probabilmente riconosce il tutto come stringa. Come faccio a far stampare il contenuto??

Grazie dell'aiuto, non ci lavoro quasi mai con la shell :|

VICIUS
10-08-2008, 10:46
Perché hai usato ' per la stringa invece di ". Con gli apici singoli le variabili non vengono sostituite con il loro contenuto.

avastreg
10-08-2008, 12:56
Perché hai usato ' per la stringa invece di ". Con gli apici singoli le variabili non vengono sostituite con il loro contenuto.

grazie!!

Cmq nel frattempo ho scoperto di non aver più bisogno di questo script, che serviva per settare il bind-address di mysql all'indirizzo aggiornato (ho ip variabile avendo telecom) a cui accedo via dynamic dns. Ho scoperto che bastava settare il bind-address a 0.0.0.0 per poter accedere a tutti gli indirizzi :muro:

Grazie a tutti per i chiarimenti :)