PDA

Visualizza la versione completa : [linux script] string tokenizer


Tigre851
10-01-2005, 19:07
Ciao!
sto cercando di fare uno script ma ho la necessità di dividere i parametri passati allo script in 3 variabili. con $* ottengo una stringa con tutti i parametri passati, come posso dividerli? grazie :unz: :ciauz:

Ikitt
10-01-2005, 19:09
Originariamente inviato da Tigre851
sto cercando di fare uno script ma ho la necessità di dividere i parametri passati allo script in 3 variabili. con $* ottengo una stringa con tutti i parametri passati, come posso dividerli? grazie :unz: :ciauz:

Non puoi usare $1 $2 $3... ?
Comunque dovrebbe esserci un built-in in bash per dividere una stringa in token.

Tigre851
10-01-2005, 19:10
proprio quello che mi serviva. grazie 1000

Ilmalcom
10-01-2005, 19:42
Originariamente inviato da Ikitt
Non puoi usare $1 $2 $3... ?
Comunque dovrebbe esserci un built-in in bash per dividere una stringa in token.
Si può usare cut, volendo

Tigre851
10-01-2005, 20:45
mi puoi spigare come? perche ho un problema.

comando dato1 "ciao mondo"

$1 --> contiene dato1
$2 --> contiene solo ciao e non ciao mondo...

come posso fare?

Ilmalcom
10-01-2005, 20:59
Originariamente inviato da Tigre851
mi puoi spigare come? perche ho un problema.

comando dato1 "ciao mondo"

$1 --> contiene dato1
$2 --> contiene solo ciao e non ciao mondo...

come posso fare?
"$2" contiene ciao mondo :fagiano:

Sergio Pedone
10-01-2005, 21:00
[sergio@winnie ~]$ cat stampa.sh
#!/bin/bash
#
echo "arg[0]: $0"
echo "arg[1]: $1"
echo "arg[2]: $2"
[sergio@winnie ~]$ bash stampa.sh dato1 "ciao mondo"
arg[0]: stampa.sh
arg[1]: dato1
arg[2]: ciao mondo
[sergio@winnie ~]$ chmod u+x stampa.sh
[sergio@winnie ~]$ ./stampa.sh dato1 "ciao mondo"
arg[0]: ./stampa.sh
arg[1]: dato1
arg[2]: ciao mondo

verifica quanto hai fatto con questo esempio banalissimo.
quello che ti e' stato suggerito dagli altri utenti è corretto.

ciao.

Tigre851
10-01-2005, 22:41
avete ragione scusate... ho appena ricontrollato... grazie

Tigre851
10-01-2005, 23:00
scusate la mia ignoranza estrema... (è la prima volta che mi metto a fare uno script in bash) però ho un altro problema...

il mio script non è altro che un interfaccia per un altro script... si tratta di smssend.

esso richiede i seguenti parametri

smssend vodafoneit user passw numdestinatario messaggio

fin qui tutto bene, il mio script (a cui ho dato nome "sms")chiede solo nomedest e messaggio, solo che se il messaggio è passato con le virgolette queste non mi vengono passate.

destinatario=$1
messaggio=$2
/* ricerca del numero telefonico del destinatario tramite il nome*/

smssend vodafoneit user passw $destinatario $messaggio

il problema è che se il messaggio è del tipo "ciao come va"
la variabile messaggio conterrà: ciao come va senza le virgolette che se passate allo script smssend verranno interpretati come tre parametri differenti.

scusate ancora e vi ringrazio in anticipo

Ilmalcom
10-01-2005, 23:09
Prego? Non ho capito il problema

Loading