Nieuws:

We zijn er weer.

Na lange tijd van afwezigheid zijn we er weer  :laugh:
We hebben alle wachtwoorden gereset, je oude wachtwoord werkt niet meer.Je moet via het "wachtwoord vergeten"-linkje je wachtwoord resetten. Je krijgt hiervoor een mailtje op het adres dat je bij ons geregistreerd hebt.

De komende tijd zijn we nog druk bezig om de rest van de site op te bouwen, dus het kan zijn dat sommige onderdelen (tijdelijk) niet werken.

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

Auteur Topic: tweede parameter wordt niet herkent  (gelezen 751 keer)

Offline eclectica

  • Lid
  • Steunpunt: Nee
tweede parameter wordt niet herkent
« Gepost op: 2011/07/06, 13:45:25 »
Hey kan iemand mij helpen met volgdene script?

Ik ben bezig aan een scriptje dat je via een 2 parameters kunt doorgeven of je een map of een bestand(code is hier weg omdat niet relevant is ) wilt maken en hoeveel.

Helaas wil mijn functie files niet werken en ik zie niet in waarom.
Ik geef bij mijn switch de 2e parameter mee als je eerste parameter '-f' is .
ik probeer met een for lus de aantal files aan te maken maar hier loopt het fout want hij blijft de lus herhalen  ...

Ik heb al met een while geprobeert en anders proberen werken maar he tblijft mislukken. Ik vind het heel raar dat dit niet werk
of heb ik iets over het hoofd gezien ?
En wat raar is is dat mijn tweede parameter niet herekent wordt want als ik deze echo, echoot hij niks.
Bedankt !
function files()
{
 local var=$2;
 for (( i=1;i -le $var;i++))              
 do
  touch test$i /home/arian/Bureaublad/scripts
  echo $i
done
}

case $1 in
  "-f")files $2;;
    *) echo "foutieve ingave ! optie + aantal bestanden/mappen";;
esac
« Laatst bewerkt op: 2011/07/06, 13:47:06 door eclectica »

Offline Mossie

  • Lid
  • Steunpunt: Nee
Re: tweede parameter wordt niet herkent
« Reactie #1 Gepost op: 2011/07/06, 14:20:18 »
Deze code werkt wel.
function files() {
local var=$1
for i in `seq 1 $var`
do
touch test$i /home/arian/Bureaublad/scripts
echo $i
done
}

case $1 in
"-f")
files $2
;;
*)
echo "foutieve ingave ! optie + aantal bestanden/mappen"
;;
esac

De for-loop die jij gebruikt kent bash niet. Dit is een C-stijl for-loop. Bash kent alleen for-loops die kijken of een reeks (hier de reeks van 1 t/m de tweede parameter) aflopen. Verder is $2 in de functie files de tweede parameter van deze functie, en niet de tweede parameter van het script. Dit moet dus de eerste parameter van de functie worden.

Offline eclectica

  • Lid
  • Steunpunt: Nee
Re: tweede parameter wordt niet herkent
« Reactie #2 Gepost op: 2011/07/06, 15:09:05 »
raar dat deze niet herkent wordt volgens jou want ik schrijf altijd lussen in scriptjes van linux zo en die geven nooit problemen ...

Offline SeySayux

  • Lid
    • SeySayux.net
  • Steunpunt: Nee
Re: tweede parameter wordt niet herkent
« Reactie #3 Gepost op: 2011/07/06, 20:43:07 »
'var' is een getal en wordt dus vergeleken met <=, niet -le.

Oh ja, 'seq' is ongelofelijk traag in vergelijking met de ingebouwde functies, dus die kan je beter vermijden.

- SeySayux
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net