Nieuws:

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

Auteur Topic: Boolean operator moet true geven bij verschillende waarden.  (gelezen 1993 keer)

Offline bart85

  • Lid
Boolean operator moet true geven bij verschillende waarden.
« Gepost op: 2018/01/10, 09:47:01 »
Onderstaande code is een voorbeeld dat OK moet weergeven als $i en $j verschillend zijn. Het probleem is dat het if statement ook true geeft als ze beiden waar zijn.
Hoe kan ik een if statement schrijven die true terug geeft als $i en $j verschillend zijn?
Dit ben ik in mijn script nodig. Het gaat om de taal bash.

if [[ $i = a || $j = b ]]
then
echo "$i $j OK"
else
echo "$i $j wrong"
fi
$i $j result if statement
0 0 0
0 1 1
1 0 1
1 1 0
« Laatst bewerkt op: 2018/01/10, 10:06:28 door bartveurink »
Relying on complex tools to manage and build your system is going to hurt the end-users. [...] "If you try to hide the complexity of the system, you'll end up with a more complex system". Layers of abstraction that serve to hide internals are never a good thing. Instead, the internals should be designed in a way such that they NEED no hiding.

— Aaron Griffin

Re: Boolean operator moet true geven bij verschillende waarden.
« Reactie #1 Gepost op: 2018/01/10, 11:14:50 »
Hallo, bedoel je dit soms?
(edit: code iets aangepast).

#!/bin/bash

x=6
y=1
if [ $x -eq $y ]; then
echo "$x en $y: beide gelijk"
else
echo "$x en $y: OK, beide ongelijk, dit is wat we zoeken."
fi

exit;
« Laatst bewerkt op: 2018/01/10, 11:42:52 door Paul Matthijsse »

Offline bart85

  • Lid
Re: Boolean operator moet true geven bij verschillende waarden.
« Reactie #2 Gepost op: 2018/01/10, 12:09:54 »
Het voorbeeld is iets anders dan waar het script in gezet word, zie ik. Sorry voor mijn fout.
if [ $i = a ]
then
if [ $j = a ]
then
#fout
echo "$i $j wrong"
else
#goed
echo "$i $j OK"
fi
else
if [ $j = a ]
then
#goed
echo "$i $j OK"
else
#fout
echo "$i $j wrong"
fi
fi
Ik was eerst van mening dat dit vergelijkbaar was met mijn uiteindelijke code. Zie de code hieronder:
cdrom=no
iso=abc.iso
if [ $cdrom = "no" ]
then
[ -z $iso ] && usage
else
[ -z $iso ] || usage
fi
In het voorbeeld staan de variabele cdrom en iso al ingesteld. Hij word bepaald door de gebruiker met commandline argument. Er moet tussen een van beide worden gekozen; dus niet tegelijk. Bij een fout word usage aangeroepen.
« Laatst bewerkt op: 2018/01/10, 12:12:30 door bartveurink »
Relying on complex tools to manage and build your system is going to hurt the end-users. [...] "If you try to hide the complexity of the system, you'll end up with a more complex system". Layers of abstraction that serve to hide internals are never a good thing. Instead, the internals should be designed in a way such that they NEED no hiding.

— Aaron Griffin

Offline Nero

  • Lid
Re: Boolean operator moet true geven bij verschillende waarden.
« Reactie #3 Gepost op: 2018/01/10, 19:18:10 »
Met $j = a zet je de waarde a in variabele j. Om te vergelijken dien je == te gebruiken.

Offline bart85

  • Lid
Re: Boolean operator moet true geven bij verschillende waarden.
« Reactie #4 Gepost op: 2018/01/10, 21:37:37 »
Klopt nero. Dit is een klad om te gebruiken in mn script. Het moet nog worden uitgewerkt.
Relying on complex tools to manage and build your system is going to hurt the end-users. [...] "If you try to hide the complexity of the system, you'll end up with a more complex system". Layers of abstraction that serve to hide internals are never a good thing. Instead, the internals should be designed in a way such that they NEED no hiding.

— Aaron Griffin