Un paio di osservazioni:
1) /bin/sh su Ubuntu prevede l'esecuzione dello script tramite shell dash e non bash
Puoi leggere alcune indicazioni in questa discussione (in inglese, ma abbastanza comprensibile)
http://askubuntu.com/questions/141928/w ... d-bin-bash
Da terminale:
Codice: Seleziona tutto
vaevictis@vaevictis-HAL:~/Scrivania$ file /bin/sh
/bin/sh: symbolic link to `dash'
vaevictis@vaevictis-HAL:~/Scrivania$ which dash
/bin/dash
vaevictis@vaevictis-HAL:~/Scrivania$ file /bin/dash
/bin/dash: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0f7ff287cf26eba9a6643b1226089eea57cb7e44, stripped
mentre
Codice: Seleziona tutto
vaevictis@vaevictis-HAL:~/Scrivania$ file /bin/bash
/bin/bash: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=796da7aa73903b1e5608a8ff8433669b7e00e980, stripped
Invece, il motivo per cui ti dà errore è che mancano le virgolette intorno alle variabili in test, come ti hanno già fatto notare.
2) l'istruzione grep che usi ti preleva tutta la stringa, che a priori (credo) non è quello che vuoi fare.
Ti conviene usare l'opzione -o del comando grep, per selezionare solo la parte che matcha.
Il contenuto del file
Codice: Seleziona tutto
vaevictis@vaevictis-HAL:~/Scrivania$ cat foo.txt
hello world
prova bissseeessima
Come fai tu
Codice: Seleziona tutto
vaevictis@vaevictis-HAL:~/Scrivania$ grep hello foo.txt
hello world
vaevictis@vaevictis-HAL:~/Scrivania$ bar=`grep hello foo.txt`
vaevictis@vaevictis-HAL:~/Scrivania$ echo $bar
hello world
Come ti consiglio di fare
Codice: Seleziona tutto
vaevictis@vaevictis-HAL:~/Scrivania$ bar=`grep -o "hello" foo.txt`
vaevictis@vaevictis-HAL:~/Scrivania$ echo $bar
hello
(L'ho fatto matchando solo hello per farti vedere che prende solo la parola interessata.
Ovviamente nel tuo esempio, dovresti essere nel caso non banale in cui altre cose nella stringa, oltre quello che vuoi matchare.)
edit:
ho editato il messaggio, perché conteneva alcuni errori (in particolare, avevo pensato che l'errore fosse dovuto al fatto che dash non ha il comando [ ma non è così

)
questo non dovrebbe contenerne
