Wie sollte ich dies ändern, um zu prüfen, ob val
einen geraden oder ungeraden numerischen Wert hat?Wie überprüfe ich, ob eine Variable einen geraden (nicht ungeraden) numerischen Wert in bash hat?
val=2
if $((RANDOM % $val)); ...
Wie sollte ich dies ändern, um zu prüfen, ob val
einen geraden oder ungeraden numerischen Wert hat?Wie überprüfe ich, ob eine Variable einen geraden (nicht ungeraden) numerischen Wert in bash hat?
val=2
if $((RANDOM % $val)); ...
$ a=4
$ [ $((a%2)) -eq 0 ] && echo "even"
even
$ a=3
$ [ $((a%2)) -eq 0 ] && echo "even"
Mit dem logischen Befehl AND und echo wurde etwas neues gelernt. Danke. – shparekh
$((...))
ist nur ein Ausdruck. Das Ergebnis wird angezeigt, wenn bash
einen Befehl erwartet.
Eine POSIX-kompatible Lösung wäre:
if [ "$((RANDOM % 2))" -ne 0 ];
aber da RANDOM
auch nicht in POSIX definiert ist, man kann auch das Recht bash
Befehl für den Job verwenden: eine arithmetische Auswertung Verbindung Befehl:
if ((RANDOM % 2)); then
es ist komisch (dh schwer zu lesen), dass das 'if ((RANDOM% 2)); then 'wird wahr, wenn RANDOM kein Vielfaches von 2 ist ... –
Dies ist das gleiche Idiom, das in anderen Sprachen häufig verwendet wird. C hätte 'if (random/2) {...}'. Python hätte 'falls random/2: ...'. – chepner
foo=6
if [ $((foo%2)) -eq 0 ];
then
echo "even";
else
echo "odd";
fi
Das hat mein Problem gelöst. – shparekh
Was möchten Sie überprüfen? – fedorqui
Ich brauche dies eine korrekte bedingte Anweisung zu überprüfen, ob die Zufallsvariable gerade ist. Jetzt heißt es nur noch: "0: Befehl nicht gefunden" – lizarisk
So? http://stackoverflow.com/questions/3601515/how-to-check-if-a-variable-is-set-in-bash –