|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Aug 2005
Messaggi: 439
|
script unix aiuto
allora raga
devo scrivere uno script shell che prende in input: primo argomento: un nome di directory; secondo argomento: una stringa. Visualizza i nomi dei file contenuti nella directory specificata, il cui contenuto include la stringa. io per ora ho fatto questo codice #!/bin/bash for x in `ls` do if (egrep ciao $x) then echo $x fi done che mi trova la stringa ciao cercando nei file della cartella è funziona l'unica cosa e che non so come far prendere in input una specifica directory ed una specifica stringa mi date una mano? |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Fai prima ad usare l'opzione -l di grep che stampa il nome del file senza far vedere i vari match.
Codice:
grep -l 'STRINGA' cartella/* ![]() |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Nov 2007
Città: Ginevra
Messaggi: 256
|
Comunque gli argomenti li ritrovi con $n dove n e' un intero > 0.
$1 e $2 nel tuo caso |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Aug 2005
Messaggi: 439
|
ho risolto
esempio ./mioscript.sh ~/directory parola per i valori invece se i valori in ingresso sono a b ./mioscript.sh a b ora ho un altro problema diciamo che voglio passare due numeri e fare la somma quindi ./mioscript.sh 3 4 #!/bin/sh echo $1 + $2 me li vede come due caratteri e mi restituisce 3 + 4 invece di scrivere 7 sapete come fare? Ultima modifica di *MATRIX* : 12-04-2008 alle 10:20. |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Aug 2005
Messaggi: 439
|
come non detto risolto
echo $(($1+$2)) |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Aug 2005
Messaggi: 439
|
ragazzi ho bisogno nuovamente di voi
allora se inserisco una stringa il programma mi deve restituire true altrimenti false come si fa la verifica che il dato inserito è un a stringa o un numero? |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Aug 2005
Messaggi: 439
|
ragazzi qualche idea?
devo semplicemente dire if $1 è una stringa allora true ma qual'è la sintassi? HELP |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
dalla versione 3 bash supporta l'operatore =~ negli if per fare il match con una regex.
se vuoi qualcosa che funzioni ovunque: if echo "$1" |grep -E '^[0-9]+$' then # è composto da soli numeri else # è vuoto o ci sono altri caratteri fi |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Aug 2005
Messaggi: 439
|
devo provare solo una cosa quel +$ non l'ho capito
|
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
|
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Aug 2005
Messaggi: 439
|
ho solo un dubbio
se metto in input 123ciao questa è una stringa ma mi direbbe che è un numero dato che inizia con un numero come si può risolvere? |
![]() |
![]() |
![]() |
#12 |
Member
Iscritto dal: Nov 2007
Città: Ginevra
Messaggi: 256
|
Questo e' un esempio piu' carino per riconoscere un numero (trovato con 2 click su google eh
![]() Codice:
echo -en "Please guess the magic number: " read X echo $X | grep "[^0-9]" > /dev/null 2>&1 if [ "$?" -eq "0" ]; then # If the grep found something other than 0-9 # then it's not an integer. echo "Sorry, wanted a number" else # The grep found only 0-9, so it's an integer. # We can safely do a test on it. if [ "$X" == "7" ]; then echo "You entered the magic number!" fi fi |
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
|
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Aug 2005
Messaggi: 439
|
tutto ok va bene
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:18.