|
|||||||
|
|
|
![]() |
|
|
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 11: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: 12:26.




















