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 118 keer)

Offline bartveurink

  • Lid
  • Steunpunt: Nee
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 »

Offline Paul Matthijsse

  • Lid
  • Steunpunt: Nee
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 »
https://allesgimpofbijna.wordpress.com - GIMP en omstreken
https://paulsphotopalace.wordpress.com (Engelstalig) - Raw, RawTherapee, G'MIC, GIMP...

Offline bartveurink

  • Lid
  • Steunpunt: Nee
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 »

Offline Nero

  • Lid
  • Steunpunt: Ja
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 bartveurink

  • Lid
  • Steunpunt: Nee
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.