[bash] zoekscript doet naar!

Pagina: 1
Acties:
  • 116 views sinds 30-01-2008
  • Reageer

  • ZeroCode
  • Registratie: Februari 2002
  • Laatst online: 26-08 13:06
code:
1
2
3
4
5
6
7
8
#!/bin/bash
echo
echo Geef Projectnummer in:
read $projectnr
echo Geef je naam in:
read $naam

grep -i '$projectnr' * > $naam/$projectnr

Uit dit komen echt alleen maar foute dingen, iemand een id?
Ik wil gewoon dat je dat script uitvoerd en dan een searchwaarde inklopt en dat hij dat in dezelfde directory gaat zoeken in alle bestanden. Owja hij moet het wegschrijven in een andere file (goede resultaten)... :? snap er echt niks van...

  • Juup
  • Registratie: Februari 2000
  • Niet online
Ik dacht dat achter read niet $varnaam maar alleen varnaam moest staan.

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


Verwijderd

Dat klopt, verder moet grep '$string' worden: grep "$string"

Ik zou het gewoon zo doen:
code:
1
2
3
4
5
6
7
#!/bin/bash
echo
echo -e "Geef Projectnummer in: \c"
read projectnr
echo -e "Geef je naam in: \c"
read naam
ls *$projectnr* > $naam/$projectnr

  • ZeroCode
  • Registratie: Februari 2002
  • Laatst online: 26-08 13:06
Op donderdag 25 juli 2002 19:32 schreef us1111 het volgende:
Dat klopt, verder moet grep '$string' worden: grep "$string"

Ik zou het gewoon zo doen:
code:
1
2
3
4
5
6
7
#!/bin/bash
echo
echo -e "Geef Projectnummer in: \c"
read projectnr
echo -e "Geef je naam in: \c"
read naam
ls *$projectnr* > $naam/$projectnr
Dit lijkt mij ook heel wat beter maar 1 probleem hij geeft steeds een melding dat hij de file niet kan wegschrijven..
:(
code:
1
./zoek2: zerocode/411435183: No such file or directory

Verwijderd

Okee dan, dan kan je ook nog dit doen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/bin/bash
echo
echo -e "Geef Projectnummer in: \c"
read projectnr
echo -e "Geef je naam in: \c"
read naam
if [ -d $naam ] ; do
  ls *$projectnr* > $naam/$projectnr'
  exit 0
else
  echo "$naam bestaat (nog) niet!"
  exit 1
fi

  • ZeroCode
  • Registratie: Februari 2002
  • Laatst online: 26-08 13:06
maar als ik nou wil dat hij dat aanmaakt, bedoel de $naam en $projectnr?

Verwijderd

Uit mijn hoofd, de bold regel.. Als dit niet werkt probeer het met !
code:
1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash
echo
echo -e "Geef Projectnummer in: \c"
read projectnr
echo -e "Geef je naam in: \c"
read naam
[[ -d $naam ]] && mkdir $naam
if [ $? ] -eq 0 ; then
  ls *$projectnr* > $naam/$projectnr'
else
  echo "Kan directory `pwd`/$naam niet maken!"
fi

Heb het heel even getest het moet zijn:

[[ ! -d $naam ]] && mkdir $naam

  • ZeroCode
  • Registratie: Februari 2002
  • Laatst online: 26-08 13:06
Op donderdag 25 juli 2002 19:56 schreef us1111 het volgende:
Uit mijn hoofd, de bold regel.. Als dit niet werkt probeer het met !
code:
1
2
3
4
5
6
7
8
#!/bin/bash
echo
echo -e "Geef Projectnummer in: \c"
read projectnr
echo -e "Geef je naam in: \c"
read naam
[[ -d $naam ]] && mkdir $naam
ls *$projectnr* > $naam/$projectnr'

Heb het heel even getest het moet zijn:

[[ ! -d $naam ]] && mkdir $naam
Thanx dude, je hebt me enorm geholpen!!!!! :) super thanx

  • ZeroCode
  • Registratie: Februari 2002
  • Laatst online: 26-08 13:06
code:
1
2
./zoek2: line 8: unexpected EOF while looking for matching `''
./zoek2: line 9: syntax error: unexpected end of file

Oopsie

Verwijderd

Ja, wel zelf een beetje blijven nadenken... Deze is te makkelijk...

  • ZeroCode
  • Registratie: Februari 2002
  • Laatst online: 26-08 13:06
Op donderdag 25 juli 2002 20:08 schreef us1111 het volgende:
Ja, wel zelf een beetje blijven nadenken... Deze is te makkelijk...
ok error verholpen maar zo kijkt hij niet "in" de files toch? alleen naar bestandsnamen.

apostrofe zat een beetje verkeerd :P
code:
1
ls: *411435183*: No such file or directory

die 41135183 is namelijk een projectnummer dat in het bestand projecten.txt staat (weet ik nu maar hij hoort dat op te zoeken)

Verwijderd

Op de manier hoe jij het doet, krijg je na evaluatie uit de
code:
1
grep $projectnummer *

de naam van de file waarin dit projectnummer staat (projecten.txt), deze redirect je naar een file en je krijgt dus een file met inhoud "projecten.txt" en met als filename het projectnummer... Is dit je bedoeling dan? Als dat zo is, is jou redirection goed..

Vertel anders eerst ff wat precies de bedoeling is..

  • ZeroCode
  • Registratie: Februari 2002
  • Laatst online: 26-08 13:06
Op donderdag 25 juli 2002 20:24 schreef us1111 het volgende:
Op de manier hoe jij het doet, krijg je na evaluatie uit de
code:
1
grep $projectnummer *

de naam van de file waarin dit projectnummer staat (projecten.txt), deze redirect je naar een file en je krijgt dus een file met inhoud "projecten.txt" en met als filename het projectnummer... Is dit je bedoeling dan? Als dat zo is, is jou redirection goed..

Vertel anders eerst ff wat precies de bedoeling is..
Hij werkt nu wel met deze code maar ik krijg een error:
code:
1
2
3
4
5
6
7
8
#!/bin/bash
echo
echo -e "Geef Projectnummer in: \c"
read projectnr
echo -e "Geef je naam in: \c"
read naam
[[ ! -d $naam ]] && mkdir $naam
grep -i  "$projectnr" * > $naam/$projectnr

Hier de error:
grep: zerocode: Is a directory


De bedoeling is dat hij een reeks textfiles doorscanned d.m.v grep -i en als hij dan de zoekstring vind dat hij een bestand aanmaakt met de verwijzing...

Verwijderd

Dit is een foutmelding (geen error maar warning) welke je mag negeren... Grep werkt niet op directories... Je kan aan het einde van de grep regel stderr redirecten naar /dev/null
code:
1
grep -i  "$projectnr" * > $naam/$projectnr 2>/dev/null

Is niet helemaal netjes, maar wel het meest 1voudig... Andere oplossing is met find met diepte 1 alleen zoeken op files en deze lijst doorzoeken op jou argument... Of zorgen dat er geen directories in deze dir staan.. En zo zijn er nog een heleboel.. Ik denk dat bovenstaande oplossing het makkelijkst is..

  • ZeroCode
  • Registratie: Februari 2002
  • Laatst online: 26-08 13:06
Op donderdag 25 juli 2002 20:42 schreef us1111 het volgende:
Dit is een foutmelding (geen error maar warning) welke je mag negeren... Grep werkt niet op directories... Je kan aan het einde van de grep regel stderr redirecten naar /dev/null
code:
1
grep -i  "$projectnr" * > $naam/$projectnr 2>/dev/null

Is niet helemaal netjes, maar wel het meest 1voudig... Andere oplossing is met find met diepte 1 alleen zoeken op files en deze lijst doorzoeken op jou argument... Of zorgen dat er geen directories in deze dir staan.. En zo zijn er nog een heleboel.. Ik denk dat bovenstaande oplossing het makkelijkst is..
werkt als een tiet ! Thanx again.... Ja dan maar de errors naar dev/null wegschrijven, anders blijf je bezig.. Thanx man!
:D
Pagina: 1