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 2383 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 »
Je leert maar mooi over weg gaan met de commandline. Geen grafische toepassingen voor systeembeheer.
You can never make a system 100% secure unless you unplug the machine from all networks, turn it off, lock it in a safe, smother it in concrete and never use it.

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 »
Je leert maar mooi over weg gaan met de commandline. Geen grafische toepassingen voor systeembeheer.
You can never make a system 100% secure unless you unplug the machine from all networks, turn it off, lock it in a safe, smother it in concrete and never use it.

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.
Je leert maar mooi over weg gaan met de commandline. Geen grafische toepassingen voor systeembeheer.
You can never make a system 100% secure unless you unplug the machine from all networks, turn it off, lock it in a safe, smother it in concrete and never use it.