Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: [BASH] parameter naar built-in commando read  (gelezen 1489 keer)

Offline Joshua822

  • Lid
[BASH] parameter naar built-in commando read
« Gepost op: 2010/12/11, 01:16:56 »
Hallo allemaal!

Ik ben gewoon voor de lol eens aan het spelen met shellscripts voor de BASH-shell.

Nu zou ik van standard input een regel willen lezen met read. Ik wou nu uit nieuwsgierigheid eens kijken wat bijvoorbeeld de parameter -t doet of hoe de parameter -d nou precies werkt. Maar het probleem is dat ik deze parameters niet aan read kan bezorgen. Ik krijg steeds deze foutmelding:
read: 4: Illegal option -dMaar toch denk ik dat mijn commando juist moet zijn samengesteld:
read -d f HET_BERICHT
Waar denken jullie dat het probleem aan ligt? Met Google kon ik weinig vinden ( in alle voorbeelden van shellscripts die ik kon vinden, werden de parameters naar read op dezelfde manier doorgegeven ) en ook de manpage over read hielp niet om dit probleem op te lossen ( de opbouw van het commando dat bovenaan de manpage staat is de manier waarop ik mijn commando opbouw ).

Alvast bedankt voor het antwoord! :)

Offline Johan van Dijk

  • Administrator
    • johanvandijk
Re: [BASH] parameter naar built-in commando read
« Reactie #1 Gepost op: 2010/12/11, 04:47:19 »
Kijk eens in deze handleiding, op deze pagina: http://www.tldp.org/LDP/abs/html/internal.html
Of hier: http://www.vias.org/linux-knowhow/bbg_sect_08_02_01.html (oud! 2005)

Kortom: met -d geef je aan waar read de input af moet kappen.
In jouw voorbeeld geef je de letter "f" op als scheiding, en dat is is waarschijnlijk niet wat je wilde.

De variabele waar je de input in stopt is $HET_BERICHT, en dat lijkt me ook niet helemaal de bedoeling ;)

Waarschijnlijk wil je zoiets als dit:
read f -p "Hier je bericht"

Offline Joshua822

  • Lid
Re: [BASH] parameter naar built-in commando read
« Reactie #2 Gepost op: 2010/12/11, 09:55:46 »
Johan van Dijk: dat was juist wel de bedoeling ;) De bedoeling was om een regel te lezen en alleen maar alles voor de eerste f in de variabele HET_BERICHT op te slaan. En dat werkt dus niet ( maar geen enkele parameter doet het ) ;)

Offline Johan van Dijk

  • Administrator
    • johanvandijk
Re: [BASH] parameter naar built-in commando read
« Reactie #3 Gepost op: 2010/12/11, 12:40:06 »
Dit werkt hier anders wel:

echo -n "voer je tekst in, eindig met een f: "
read -df HET_BERICHT
echo
echo "HET_BERICHT is: $HET_BERICHT"

Voorbeelduitvoer:
voer je tekst in, eindig met een f: testtest1234abcdef
HET_BERICHT is: testtest1234abcde

Offline Joshua822

  • Lid
Re: [BASH] parameter naar built-in commando read
« Reactie #4 Gepost op: 2010/12/11, 16:57:27 »
Bedankt voor de hulp! Ik denk dat ik het probleem gevonden heb. Zover ik het begrijp lag het aan mijn shebang-regel. Deze was de volgende:
#!/bin/shDeze regel zorgde er volgens mij voor dat het script uitgevoerd werd door de simpelere Bourne-shell, en niet door de BASH-shell. De read built-in heeft in de Bourne-shell volgens mij deze optie gewoon niet.
Door de shebang-regel te veranderen naar
#!/bin/bashwerkte het wel.

Alleen vind ik het vreemd omdat "/bin/sh" normaal een symbolische link naar de binary van de BASH-shell zou moeten zijn in GNU\Linux volgens de documentatie op het internet. Maar ach, nu werkt het, en daar gaat het om.

Offline Johan van Dijk

  • Administrator
    • johanvandijk
Re: [BASH] parameter naar built-in commando read
« Reactie #5 Gepost op: 2010/12/11, 17:03:04 »
$ file /bin/sh
/bin/sh: symbolic link to `dash'
Geen bash dus, maar dash :)

Re: [BASH] parameter naar built-in commando read
« Reactie #6 Gepost op: 2010/12/11, 19:01:29 »
Op Debian en Ubuntu is /bin/sh inderdaad dash.

Ik herlink /bin/sh altijd naar bash.
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

Offline ivo

  • Lid
Re: [BASH] parameter naar built-in commando read
« Reactie #7 Gepost op: 2011/01/02, 13:31:50 »
Ik weet niet of het wat aan de feestvreugde toevoegt, maar met
echo $0
kun je zien in welke shell je op dat moment aan het werk bent.

inaninck@renault:~$ echo $0
bash
inaninck@renault:~$

There are only 10 types of people in the world; those who understand binary and those who don't.

Re: [BASH] parameter naar built-in commando read
« Reactie #8 Gepost op: 2011/01/02, 14:01:27 »
echo $SHELL
/bin/bash
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net