Pagina 1 di 2
bash: importare variabili da un file .conf
Inviato: mer 21 set 2005, 23:38
da cesconix
Sapete come fare a importare delle variabili da un file di testo o di configurazione che sia (creato da me)? mi servirebbe fare tanti file in lingua diversa con le stesse variabili che contengono il testo, però, nelle svariate lingue. Come potrei fare?
Inviato: gio 22 set 2005, 0:20
da useless
se il file è in formato bash puoi caricarlo col comando source (che puoi anche abbreviare con "."). oppure è la volta buona x imparare ad usare gettext (che poi è molto banale)

.
Inviato: gio 22 set 2005, 13:29
da cesconix
è bash si..quindi "." ma come si usa? non c'è un man che mi spieghi (forse faccio una googolata). Però ho visto l'output di "."
Codice: Seleziona tutto
Fr4NkiR@nixlab:~$ .
-bash: .: filename argument required
.: usage: . filename [arguments]
Fr4NkiR@nixlab:~$

praticamente dovrebbe essere tipo:
e poi come dorei richiamarle!?
Inviato: gio 22 set 2005, 13:34
da cesconix
azz ho notato che una volta caricato il file con "." le ho visibili con "set" ... ma poi come le rimuovo (tipo alla fine del programma)??
Inviato: gio 22 set 2005, 13:37
da Paoletta
unset nomevariable
Inviato: gio 22 set 2005, 18:43
da cesconix
bene...ho un altro problema: è da 3 ore che cerco di chiamare una variabile all'interno del comando "awk" per incrementarla in un ciclo while. Vi posto un esempio:
Codice: Seleziona tutto
Fr4NkiR@nixlab:~$ cat /etc/passwd | grep "Fr4NkiR" | awk -F ":" '{print $1}'
Fr4NkiR
Fr4NkiR@nixlab:~$
in questo modo otterro' la prima colonna (print $1) prima dei ":". Ok, adesso... se invece la colonna la vorrei stabilire in una variabile? ho pensato di fare:
Codice: Seleziona tutto
Fr4NkiR@nixlab:~$ n=1
Fr4NkiR@nixlab:~$ cat /etc/passwd | grep "Fr4NkiR" |awk -F ":" '{print $($n)}'
Fr4NkiR:$1$oCR0SCFf$HkAlwSeJ8MAoNBa71LttS.:500:100:Francesco,,,:/home/Fr4NkiR:/bin/bash
Fr4NkiR@nixlab:~$
come vedete ho messo in $n il valore "1" ma su awk (nel print) non funziona! come risolvereste!? ho provato mille modi...
Inviato: ven 23 set 2005, 20:55
da Paoletta
vuoi parametrizzare la colonna che usi in awk?
ti consiglio di usare cut e di fare così:
Codice: Seleziona tutto
varia=1
cat /etc/passwd | grep "Fr4NkiR" | cut -d ":" -f $varia
ciao!
Inviato: ven 23 set 2005, 23:49
da cesconix
si lo so, ma a me serve awk e una variabile contatore!
Inviato: ven 23 set 2005, 23:55
da cesconix
mmmmm forse in effetti...ghghgh..HAI RAGIONE!!! :P :P :P
Inviato: sab 24 set 2005, 9:59
da Paoletta
ah ah ah...
ciao!
Inviato: sab 24 set 2005, 15:44
da cesconix
no aspetta...con cut non posso avere un "delimiter" di più caratteri, accetta solamente un carattere delimitatore

Inviato: sab 24 set 2005, 16:56
da DarkNeo
FrANkiR ha scritto:è bash si..quindi "." ma come si usa? non c'è un man che mi spieghi (forse faccio una googolata).

Inviato: sab 24 set 2005, 19:11
da Paoletta
Codice: Seleziona tutto
va=1
cat /etc/passwd | grep "Fr4NkiR" | eval awk -F ":" \'\{print$\($va\)\}\'
Inviato: sab 24 set 2005, 21:56
da cesconix
figo, ma come mai eval? che fa eval? il man non mi dice niente di interessante ghgh...e poi perchè bisogna mettere tutti quei slash? io prima non li mettevo..sono indispensabili?
Inviato: dom 25 set 2005, 15:53
da Paoletta
ho il sospetto che ti serva una guida su bash scripting...
http://www.anirudh.net/docs/linux_sysad.pdf
eval fa sì che la shell valuti la linea di comando 2 volte; gli slash servono per quotare il carattere immediatamente successivo, in modo che la shell non lo prenda sul serio; gli apici (singoli e doppi) fanno la stessa cosa, ma su più caratteri;
ciao!