View Full Version : script unix aiuto
*MATRIX*
10-04-2008, 17:16
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?
Fai prima ad usare l'opzione -l di grep che stampa il nome del file senza far vedere i vari match.
grep -l 'STRINGA' cartella/*
ciao ;)
Comunque gli argomenti li ritrovi con $n dove n e' un intero > 0.
$1 e $2 nel tuo caso
*MATRIX*
12-04-2008, 10:16
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?
*MATRIX*
12-04-2008, 10:41
come non detto risolto
echo $(($1+$2))
*MATRIX*
12-04-2008, 11:37
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?
*MATRIX*
12-04-2008, 12:45
ragazzi qualche idea?
devo semplicemente dire
if $1 è una stringa allora true
ma qual'è la sintassi?
HELP
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
*MATRIX*
13-04-2008, 11:30
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
devo provare solo una cosa quel +$ non l'ho capito
devo provare solo una cosa quel +$ non l'ho capito
il pattern dice di cercare 1 o più occorrenze del set [0-9] (ossia tutti i numeri) e null'altro.
il grep torna 0 (true) se lo trova o false in caso il pattern non sia trovato nella stringa in input.
*MATRIX*
13-04-2008, 23:00
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?
Questo e' un esempio piu' carino per riconoscere un numero (trovato con 2 click su google eh :) )
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
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?
l'hai provato?
perchè la regexp NON fa il match con 123ciao
*MATRIX*
17-04-2008, 17:09
tutto ok va bene
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.