Nieuws:

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

Auteur Topic: Vergelijking oplossen in /bin/bash  (gelezen 4854 keer)

Offline #!

  • Lid
    • tuxtopia
Vergelijking oplossen in /bin/bash
« Gepost op: 2009/07/23, 09:47:56 »
Beste lezers,

Ik ben bezig met een versie vergelijker. Het is een dd check script, die alleen mag dd'n op het moment dat het versie nummer lager is, dan het nummer wat mee gegeven is in het script. Bijvoorbeeld, ik heb in mijn script versie 1.0 mee gegeven, de huidige versie van de server is 0.9, dus hij mag z'n dd starten.

Ik dacht dit zelf even simpel op te lossen met -el

#!/bin/bash
VAR=10
if [ "$VAR" -le "11" ] ; then
       echo "$VAR is smaller than 11"
else
       echo "$VAR is bigger than 11"
fi

en hopla! dat werkte ook prima, tot dat ik met . versies ging werken. Nou is dit simpel op te lossen door versie nummer 0.9 natuurlijk gewoon 09 te noemen, en versie 1.0 versie 10 maar ik vroeg me af of dit niet anders op te lossen was? Kan je een vergelijking doen met punten in /bin/bash of moet je dan echt gaan strippen en dat soort ongein ;)?

Re: Vergelijking oplossen in /bin/bash
« Reactie #1 Gepost op: 2009/07/23, 13:33:31 »
String-vergelijking? (<)
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

Offline track

  • Lid
Re: Vergelijking oplossen in /bin/bash
« Reactie #2 Gepost op: 2009/07/23, 16:30:02 »
Hoi ex,

bash kan inderdaad niet met [float] variabelen aan de slag, ik heb het ook nog een keer in google nagekeken.
Maar met bc kan het heel makkelijk, die kan wél dergelijke formaten aan. 

Dus#! /bin/bash

drempel=2.5

n=$( echo "$1 > $drempel" | bc )

echo $n
if [ $n == 1 ] ; then echo "$1 is groter dan $drempel"
else echo "$1 is niet groter dan $drempel"
fi

Vriendelijke groet,

track
« Laatst bewerkt op: 2009/07/23, 16:34:30 door track »

Re: Vergelijking oplossen in /bin/bash
« Reactie #3 Gepost op: 2009/07/23, 17:29:09 »
Hoi ex,

bash kan inderdaad niet met [float] variabelen aan de slag, ik heb het ook nog een keer in google nagekeken.
Maar met bc kan het heel makkelijk, die kan wél dergelijke formaten aan. 

Dus#! /bin/bash

drempel=2.5

n=$( echo "$1 > $drempel" | bc )

echo $n
if [ $n == 1 ] ; then echo "$1 is groter dan $drempel"
else echo "$1 is niet groter dan $drempel"
fi

Vriendelijke groet,

track
Voor wat ex wilt is FP math erbij halen een slecht idee volgens mij... String-vergelijking is meer dan goed genoeg hier, dat is wat ik gebruik om versie-nummers te vergelijken. Want als je versienummers krijgt zoals 1.2.3, dan kan je niets meer aanvangen met FP math... ;)
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

Offline track

  • Lid
Re: Vergelijking oplossen in /bin/bash
« Reactie #4 Gepost op: 2009/07/23, 17:45:36 »
Daar heb je gelijk.  Mits er meerdere puntjes / sub-subversies zijn moet je toch aan stringverwerking beginnen.
Dat wilde ik graag omzeilen omdat het dan gauw een beetje ingewikkeld wordt.

Bij mijn versie gebeurt alles eigenlijk in maar één simpele regel. (en automatisch bovendien)
En voor het voorbeeld dat ex aangaf zou dat ook voldoende zijn ...

track

Offline profoX

  • Lid
    • wesley
    • Lionslink
Re: Vergelijking oplossen in /bin/bash
« Reactie #5 Gepost op: 2009/07/23, 18:25:11 »
track: maar bij FP math is "versie 1.2" nieuwer dan versie "1.12" en meestal is dat niet de bedoeling
Human Knowledge Belongs To The World -- Antitrust (2001)
Nederlandstalige Ubuntu documentatie van Ubuntu-NL (wiki)

Offline track

  • Lid
Re: Vergelijking oplossen in /bin/bash
« Reactie #6 Gepost op: 2009/07/23, 18:38:09 »
Als je op die manier telt klopt dat.

Ik had de manier van tellen b.v. van de Linux Kernel (in zijn vroege tijd) in mijn hoofd:
v 0.01, v 0.02, .. v 0.12, .. v 0.9, v 0.95, v 0.98, v 0.99, v 1.0  enz.
(die volgt wél de logica van FP en ik zelf zou mijn versies ook eerder in die trant tellen)

Je moet uiteindelijk de logica van jouw eigen schema in het script afbeelden, ja.

track

Offline #!

  • Lid
    • tuxtopia
Re: Vergelijking oplossen in /bin/bash
« Reactie #7 Gepost op: 2009/07/24, 15:54:03 »
Harstikke bedankt voor alle tips :), eerst is me mac adres vergelijker afmaken en dan ga ik het allemaal testen :)!