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: Boolean operator moet true geven bij verschillende waarden.  (gelezen 548 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: Ja
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, 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.