Bash - inhoud var lowercase maken

Pagina: 1
Acties:

  • Mamphiz
  • Registratie: Maart 2001
  • Laatst online: 18-06 21:03
He mensen,

geen geluk vandaag... weer een vraagje over Unix,

heb in een script aan variable en die kan chars bevatten (DIT kan die VArIabLE ziJN)die of lower of uppercase zijn... en ze moeten allemaal lowercase worden...

heb gezocht op google op lowercase unix, lowercase unix string, case lower unix, case string unix
maar niks gevonden, kan iemand mij weer helpen? Alvast bedankt!

  • Rotjeknor
  • Registratie: April 2001
  • Laatst online: 03-02 15:29
Vaak heeft een commando wat je gebruikt een of andere optie voor case insensitive, zie grep -i bla * waarbij de -i voor case insensitive staat. Ik weet niet of dit helpt voor je, wat wil je met dat scriptje doen?

Ook Knor is aangestoken met het ligfietsvirus!


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

Zie mijn reply op je andere topic: [rml].oisyn in "[ bash] deel van een string *"[/rml]

Doe bijvoorbeeld eens 'man bash'
Of [google=bash manual]
[google=bash string manipulation]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Mamphiz
  • Registratie: Maart 2001
  • Laatst online: 18-06 21:03
nou het is een website script, moeten in Unix/bash een website maken... (verrotte zooi) en ik heb een variable $page, hierin staat welke pagina hij op moet vragen....

met een
if test "$WWW_page" != "help" vergelijk ik de pagina, maar als het in hoofdletters geschreven is (omdat de gebruiker wil klooien) dan werkt die IF statement niet...

dus ik heb volgens mij geen opties voor lowercase... is er een functie...

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

na 2 minuten zoeken kwam ik hierop: http://www.gnu.org/manual...s.html#String%20Functions

ik zie daar een tolower en een toupper

code:
1
2
oisyn@xs2:~% awk 'BEGIN { print toupper("Dit Is Een Test") }'
DIT IS EEN TEST

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Mamphiz
  • Registratie: Maart 2001
  • Laatst online: 18-06 21:03
hmmmm vaagjes...

bij mij krijg ik telkens een syntax error...
ik heb ook include<ctype.h> gedaan en nog werkt het neit...

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 09-01 11:25

D2k

in wat voor taal wil je het doen dan?
C of bash?

Doet iets met Cloud (MS/IBM)


  • Mamphiz
  • Registratie: Maart 2001
  • Laatst online: 18-06 21:03
bash

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 09-01 11:25

D2k

wat wil je dan in godesnaam met die include bereiken?

Doet iets met Cloud (MS/IBM)


  • Mamphiz
  • Registratie: Maart 2001
  • Laatst online: 18-06 21:03
weet niet....

stond in man dat het nodig was... maar nou je het zegt snap ik wrm het niet moet....
bash is echt irri taaltje, maar ja, het moet...

weet je een oplossing?

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 09-01 11:25

D2k

alles lowercase maken

(en nee ik ga het niet voordoen)

[ Voor 46% gewijzigd door D2k op 14-04-2003 14:34 ]

Doet iets met Cloud (MS/IBM)


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

(zucht)

bash is een shell, die eveneens scripts uit kan voeren. Dat betekent dat je je scripts ook letterlijk op de commandline kunt invoeren. Zoals je zag maakte ik net gebruik van het programmaatje AWK, waarmee je ook soort van mini-scripts mee uit kunt voeren. Ik gebruikte een klein scriptje die een stuk tekst omzette naar uppercase

De regel in je bashscript wordt dan ook letterlijk:
code:
1
awk 'BEGIN { print toupper("Dit Is Een Test") }'


Nou is dat gewoon een uitvoer naar de console, en daar heb je op zich weinig aan, maar door gebruik te maken van de backtic operator (`commando`) kun je de uitvoer van een programma gebruiken als parameter voor een ander programma

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Surehand
  • Registratie: Februari 2003
  • Laatst online: 18-08 15:40
Je kunt eventueel het commando tr gebruiken:

Bash:
1
if [ `echo $WWW_page | tr "[:lower:]" "[:upper:]"` != "HELP" ] then ...

Let er wel op dat je dan altijd vergelijkt met een string in hoofdletters. Als je liever wil matchen met lowercase, draai dan :lower: en :upper: om

  • Mamphiz
  • Registratie: Maart 2001
  • Laatst online: 18-06 21:03
Lijkt misschien heel stom, maar dat awk ding werkt wel op commandline, maar niet in mijn script!

ik doe dit:
page=(awk "BEGIN { print tolower($WWW_page)})
echo $page #dit is om te testen
als uitvoer vind ik dit:
awk

[ Voor 10% gewijzigd door Mamphiz op 14-04-2003 14:48 ]


  • _Squatt_
  • Registratie: Oktober 2000
  • Niet online
Vervang de buitenste open en sluiten haakjes in de eerste regel eens door de backtick: `

[ Voor 8% gewijzigd door _Squatt_ op 14-04-2003 14:51 ]

"He took a duck in the face at two hundred and fifty knots."


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ik zie geen backtick operator, bovendien klopt er ook geen zak van je quotes (je begint bijvoorbeeld met ", die je niet afsluit, en dat terwijl het argument in single-quotes moeten staan ipv double-quotes

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Mamphiz
  • Registratie: Maart 2001
  • Laatst online: 18-06 21:03
page=(awk "BEGIN { print tolower($WWW_page)}")

ok zo dan... maar als je een single quote gebruikt, dan ziet die $WWW_page als tekst en niet als een variable!

en () is toch backtick????

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

Nee, de ` (dat knopje naast de 1) is de backtick

En om $WWW_page moeten wel double-quotes, anders ziet awk het niet als een string. En er is vast wel een manier om ervoor te zorgen dat variabelen wel mogelijk zijn tussen single-quotes

Het maakt idd niet uit of het single of double quotes om het scriptje staan, het is simpelweg om ervoor te zorgen dat het geheel als 1 parameter naar awk wordt gezien. Alleen als je er double-quotes omheen zet dan kom je weer in de knoei met de double-quotes om $WWW_page, vandaar dat single-quotes in zo'n geval handiger is. Maar misschien kun je de double-quotes escapen?

.edit: escapen gaat weer niet in een quoted string :{ Maar gelukkig ziet ie 2 strings die achter elkaar staan zonder spatie ertussen wel als 1 parameter, dus het is zo op te lossen:

code:
1
page=`awk 'BEGIN { print tolower ("'$WWW_page'")}'`

[ Voor 64% gewijzigd door .oisyn op 14-04-2003 15:09 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Mamphiz
  • Registratie: Maart 2001
  • Laatst online: 18-06 21:03
TOPPIE! geweldig! hij doet het nu!

THANKS! _/-\o_

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

Let wel dat ik aan het begin van deze topic nog helemaal geen f*ck van bash af wist, behalve dat het een linux shell is (en de backtick operator dan), en ik het dus triest vind dat jij dat niet zelf uit had kunnen vinden

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Kees
  • Registratie: Juni 1999
  • Laatst online: 22-08 13:15

Kees

Serveradmin / BOFH / DoC
http://www.tldp.org/LDP/abs/html/index.html

En er zijn meer dan genoeg progs voor die het voor je kunnen doen.. tr, awk etc, voor mijn part schrijf je zelf iets, wat ook nog geen 5 minuten kost..

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan

Pagina: 1