[bash] confronto parte iniziale stringa

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
luppolo
Prode Principiante
Messaggi: 97
Iscrizione: lunedì 17 marzo 2008, 18:00
Località: vicino Milano

[bash] confronto parte iniziale stringa

Messaggio da luppolo »

ciao a tutti.
sto facendo un semplice script in cui eseguo un comando prendendo come parametri in ingresso dei parametri, appunto, letti da un file di configurazione.

per ora sono riuscito a leggere il file, vorrei sapere se era possibile confrontare l'inizio di una stringa, letta dal file con un valore di default.

il mio codice, ora è

Codice: Seleziona tutto

#!/bin/bash
while read "foo";
do
  bar=$foo
  if $bar = "cowsay" #per provare
  then
  sh $foo
  else 
  sleep 0.5
  fi
done < file.conf 
il file "file.conf" è, al momento, questo

Codice: Seleziona tutto

prova&
ciao 
foo
bar 
42

cowsay ciao +xy -r -k

lol


cowsay ciao

la mia idea è, una volta nel ciclo, confrontare se l'inizio di $foo è "cowsay". in questo modo eseguirò solamente quei comandi, ignorando gli altri.

il problema che mi si pone però è il seguente:

Codice: Seleziona tutto

./prova.sh: line 7: prova&: command not found
./prova.sh: line 7: ciao: command not found
./prova.sh: line 7: foo: command not found
./prova.sh: line 7: bar: command not found
./prova.sh: line 7: 42: command not found
./prova.sh: line 7: =: command not found
 _________________________
< ciao +xy -r -k = cowsay >
 -------------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
./prova.sh: line 7: =: command not found
./prova.sh: line 7: lol: command not found
./prova.sh: line 7: =: command not found
./prova.sh: line 7: =: command not found
 _______________
< ciao = cowsay >
 ---------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

ovvero, è sbagliato il confronto  ::)


any ideas???
>:(
Ubuntu user #22010
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [bash] confronto parte iniziale stringa

Messaggio da Zoff »

Al posto di:

Codice: Seleziona tutto

  if $bar = "cowsay"
Usa:

Codice: Seleziona tutto

  if [ "${bar:0:6}" = "cowsay" ]
Ultima modifica di Zoff il martedì 1 giugno 2010, 1:00, modificato 1 volta in totale.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: Google [Bot] e 4 ospiti