Avatar billede limemedia Nybegynder
26. april 2002 - 15:10 Der er 15 kommentarer og
2 løsninger

Bourne Shell og reg.exp. validering af input

Jeg sidder og laver lidt BourneShell scripting og er rendt panden mod muren i den absolut mest simple del af scriptet *dooh*

Det jeg prøver er, at validere at indholdet af $1 er mindst 6 tegn og A-Z eller 0-9 - men det virker ikke helt ? Nogen der har et vink med en vognstang ?

# Check weather loginname is valid (least 6 chars, a-z 0-9)
VALIDNAME=`grep -c "^[a-zA-Z0-9]$" $1`
if [ $VALIDNAME -ne 0 ]; then
    echo "[a-z0-9] is allowed !"
    exit 1
fi


/ LJ
Avatar billede jespernaur Nybegynder
26. april 2002 - 15:21 #1
Dit regulære udtryk matcher et og kun et tegn.

Hvis du ændrer til

    ^[a-zA-Z0-9]{6,}$

burde det virke, men det ved jeg ikke om grep kan. Hvis ikke, må du lave noget ala

    ^[a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9]+$

Mvh
Jesper Naur
Avatar billede limemedia Nybegynder
26. april 2002 - 15:23 #2
problemet lige nu er, at greb ret meget ignorerer enhver indtastning... Alt hvad jeg kan læse om greb viser den virker genialt på filer, men ikke enkelte variabler ?
Avatar billede jespernaur Nybegynder
26. april 2002 - 15:42 #3
grep tager input enten fra filer eller fra standard input. Du skal mao sørge for
at indholdet af $1 enten kommer til at stå i en fil, eller direkte bliver sendt
til grep's standard input. Det sidste må kunne opnås ved at gøre noget i retning af

VALIDNAME=`echo $1 > grep -c "^[a-zA-Z0-9]{6,}$"`

Mvh
Jesper Naur
Avatar billede erikjacobsen Ekspert
26. april 2002 - 15:46 #4
Du har ikke Perl, Lars ??
Avatar billede limemedia Nybegynder
26. april 2002 - 15:50 #5
erik >> det er en skoleopgave :)) det *skal* være Bourne Shell :))
Avatar billede limemedia Nybegynder
26. april 2002 - 15:52 #6
synes ikke helt det spiller, kører den her

---
echo $1

# Check weather loginname is valid (least 6 chars, a-z 0-9)
VALIDNAME=`echo $1 > grep -c "^[a-zA-Z0-9]{6,}$"`
if [ $VALIDNAME -ne 0 ]; then
    echo "Only names of [a-z0-9] is allowed !"
    exit 1
fi

echo $VALIDNAME
---

og får
daVinci# ./adduser.sh 'a^ab^bc' 'benni'
a^ab^bc
[: 0: unexpected operator

daVinci#
Avatar billede erikjacobsen Ekspert
26. april 2002 - 15:53 #7
Nå da da. Hvad med awk ?

Prøv evt se hvad grep rent fatisk afleverer som output - det er ikke 0
Avatar billede limemedia Nybegynder
26. april 2002 - 15:56 #8
erik >> awk vil vores lærer kunne lide, men synes til en "oneliner" at grep måtte være det bedre valg - også mest for at lære om det kunne lade sig gøre. Det er rent "nussen" om opgaven, men det skal jo til... og så er jeg jo nysgerrig...

-c argumentet bruger jeg på baggrund af at den skulle vise antal linier der matcher, jeg ville forvente 0 eller 1 (boolean) på denne ?!?
Avatar billede erikjacobsen Ekspert
26. april 2002 - 16:00 #9
Hvad med | isf >

(jeg havde overset -c )
Avatar billede limemedia Nybegynder
26. april 2002 - 16:04 #10
| isf > ?
Avatar billede erikjacobsen Ekspert
26. april 2002 - 16:09 #11
Du bliver nok nødt til at bruge Jespers:

^[a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9]+$

sammen med egrep
Avatar billede erikjacobsen Ekspert
26. april 2002 - 16:10 #12
VALIDNAME=`echo $1 | egrep -c "^[a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9]+$"`
Avatar billede limemedia Nybegynder
26. april 2002 - 16:20 #13
SÅ ! virker den :)) kanon ...

skal du have lidt af points'ne også eriksan ?
Avatar billede erikjacobsen Ekspert
26. april 2002 - 16:22 #14
Joooh, men jeg synes jo ikke så godt om at have hjulpt dig med en skoleopgave.
Kunne jeg få lidt af karakteren...?
Avatar billede limemedia Nybegynder
26. april 2002 - 16:24 #15
erik >> hvis jeg mod al forventning skulle bestå faget, kan du få en pils :)) det er vist bedre.

Med din baggrund, tror jeg de ville ligge flad af grin på Ventures hvis du meldte dig til fag *g*
Avatar billede erikjacobsen Ekspert
26. april 2002 - 16:26 #16
Mon læreren kan forstå din løsning..?
Avatar billede limemedia Nybegynder
26. april 2002 - 16:38 #17
erik >> med det jeg har læst om fyren, tror jeg det her er noget han fisler ud af ærmet en søndag eftermiddag mens han læser søndagsberlingeren... ( læs : jeg ville gerne blot tilnærmelsesvist nærme mig hans uddannelsesniveau )
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester