Nieuws:

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

Auteur Topic: een file als argument aan bash doorgeven  (gelezen 1307 keer)

Offline gercokees

  • Lid
een file als argument aan bash doorgeven
« Gepost op: 2008/11/19, 16:00:20 »
Haai,
Ik heb een file met een groot aantal nummers...
Die nummers wil ik aan een bash-scriptje doorgeven die ze dan 1 voor 1 naloopt....
ik dacht dat als volgt te doen:
script.sh < filemetnummers.txt
waarom werkt dit niet?

script.sh:
#! /bin/sh
for var in "$@"
do
    echo "$var"
done
Groet,
Gerco-Kees
<><

Offline profoX

  • Lid
    • wesley
    • Lionslink
Re: een file als argument aan bash doorgeven
« Reactie #1 Gepost op: 2008/11/19, 16:53:54 »
try:
cat filemetnummers.txt | script.sh
edit: hoewel, als jouw methode niet werkt zal dit ook wel niet werken en is er iets anders mis..
« Laatst bewerkt op: 2008/11/19, 17:03:21 door profoX »
Human Knowledge Belongs To The World -- Antitrust (2001)
Nederlandstalige Ubuntu documentatie van Ubuntu-NL (wiki)

Offline vanadium

  • Lid
Re: een file als argument aan bash doorgeven
« Reactie #2 Gepost op: 2008/11/19, 18:41:53 »
Argumenten op de commandolijn zijn niet hetzelfde als standaard input. Nu ben ik niet ervaren in bash scripting om te weten hoe je standaard input kan inlezen en verwerken. Een trukje om het toch te klaren is

script $(cat file.txt)

zal werken voor jou, maar spaties in lijnen zullen als afzonderlijke argumenten aangeboden worden.

Offline jimi

  • Lid
Re: een file als argument aan bash doorgeven
« Reactie #3 Gepost op: 2008/11/19, 18:55:36 »
Staan de nummers in je file elk op een nieuwe regel?
Regel-voor-regel lezen van standard input kan als volgt in bash:
#!/bin/bash

while read nummer
do
        # $nummer bevat nu een regel
        echo $nummer
done

Offline gercokees

  • Lid
Re: een file als argument aan bash doorgeven
« Reactie #4 Gepost op: 2008/11/20, 13:45:49 »
Thanx gentleman...
Het voorbeeld van Jimmi gepakt, dat werkt voor mij het best, maar de laatste regel moet dan zijn:

#!/bin/bash

while read nummer
do
        # $nummer bevat nu een regel
        echo $nummer
done < inputfile

groetjes,
Groet,
Gerco-Kees
<><