Newsgroup: it.comp.os.linux.iniziare
Titolo: Problema script shell ( -exec di find e *)

*Scusate se posto in due newsgroup ma noto che nel primo non ci sono 
messaggi negli ultimi due o tre giorni*
Sto provando a fare uno script shell che si basa sulla ricerca di 
stringhe contenute in file e sono incappato in questo errore che non 
riesco a spiegarmi:
#!/bin/bash
function stringmatching(){
 
	if [ -z "$1" ];then
		echo "Stringa da ricercare non inserita";
	else
		STRINGA="-exec grep -l "$1" {} \;"
	fi
	echo $STRINGA
}
STRINGA=""
stringmatching $1
find . -name "prova" $STRINGA
######################################
In pratica nel file di testo prova ho scritto ad esempio ciao e 
richiamando: "scipt.sh ciao" questo dovrebbe ridirmi il nome del file 
poichè la stringa compare in esso (ho cercato di semplificare lo 
script...lo so che così ha poco senso)...
il fatto è che mi dà questo errore:
find: manca l'argomento di `-exec'
Se invece provo a mettere un echo $STRINGA prima di file è giusta... 
infatti se provo a fare:
find . -name "prova" -exec grep -l ciao {} \;
questo mi trova giustamente che nelfile c'è la stringa.... Qual è allora 
il problema dello script??
un altro problema è questo e riguarda l'asterisco :
#!/bin/bash
find . -type f -name "$1"
echo "$1"
###############
se io volessi fare una ricerca di tipo find . -type f -name c*
volendo ottenere tutti i file che iniziano x c nella mia cartella (ad 
esempio ciao , ciccio, cerca )
non riesco a ottenere il risultato dato che appena io do
script.sh c*
internamente lui cerca tutti i c* e dà al find il primo dei valori di 
tipo c* che incontra...ad esempio cerca in questo caso (almeno credo 
ragioni così)....
infatti se provo da shell a dare c* e invio, me lo esplode....
Come posso risolvere il problema visto che voglio dare la possibilità 
all'utente di utilizzare i caratteri speciali?
Grazie mille per le risposte

 find . -type f -name "$1"
non sono sicuro di aver capito cosa desideri, ma credo che sia
find . -type f -name $@
oppure dovresti chiamare il tuo script come
nomescript.sh c\*
-- 
Under construction

 echo "$1"
togli echo $1, ti restituisce come output il parametro che tu
dai allo script, non molto utile.
poi invochi lo script così:
script.sh c\* (oppure "c*")
devi far capire alla shell che tu vuoi un asterisco normale, non
un'espansione.

 find: manca l'argomento di `-exec' 
Grazie dell'altro consiglio

 STRINGA="-exec grep -l "$1" {} \;"
Se tolgo il backslash non mi dà errore....il problema è che non valuta 
l'espressione -exec .... prova a testarlo (solito file prova con dentro 
ciao)
se richiami lo script passando ciao funziona.....se passi qualsiasi 
altra cosa funziona lo stesso......quindi ignora il comando :(

 altra cosa funziona lo stesso......quindi ignora il comando :(
testato. funziona correttamente.

 mettessimo l'ot.
Sempre l'ordinamento di cui sopra? Quello a causa del qualie molti
utenti studierebbero gli script?
Mi spieghi di che parli? :)
-- 
Pigital

chiedo umilmente perdono dato che adesso funziona come dici 
tu....l'avevo testato pure io ma probabilmente avevo tolto qualcosa o 
cercato di modificarlo in alcune prove...
Ho copiato lo script che avevo postato al topic e con la tua correzione 
è ok.
Thx mille ;)