Bitweises ODER in der shell?

C

clone

Mitglied
Grü,
kann mir jemand erklären wie ich in der sh zwei variablen bitweise ODER verknüpfen kann??

Var1=1000
Var2=0100

bsp: Ergebnis = Var1 | Var2

als ergebnis sollte dann 1100 rauskommen!!

thx im voraus

mfg clone
 
hm eigentlich sollte das so funzen...

Code:
echo $((1000|0100))

dort kommt aber 1000 heraus X(
 
echo $((1000|0100))

habe ich schon probiert als ergebniss bekomme 1004?!!
 
ok habe nochmal folgendes probiert :)

Code:
echo "ibase=2; obase=2; $((1000|0100))" | bc
also eingabe und ausgabe, alles auf basis 2, spuckt aber auch wieder 1000 aus.

Code:
snax@superpc:~> v1=2#1000 ; v2=2#0100
snax@superpc:~> echo $((v1|v2))
12

2# = basis 2. hier spuckt die shell schonmal 12 aus :D das ist ja als dezimales ergebnis schonmal richtig.
 
hi hab leider kein linux zur hand

aber ich würd sagen

Code:
echo -e 'obase=2;12' | bc
funkt sicher

jetzt must du nur noch statt 12 was mit ((v1|v2)) hineinschrieben
bzw.
Code:
v3=$((v1|v2))
und dann irgendwie
Code:
echo -e 'obase=2;$v3' | bc

ich kanns leider nicht ausprobiern aber geht sicher irgendwie so
 
ich kanns leider nicht ausprobiern aber geht sicher irgendwie so

jep so funzt es :)

Code:
snax@superpc:~> v1=2#1000 ; v2=2#0100
snax@superpc:~> v3=$((v1|v2))
snax@superpc:~> echo -e "obase=2;$v3" | bc
1100
 
Grü,
erstmals danke für die rasche antwort.

Leider funzt die ausgabe in 'dual' noch nicht.


script:
------------------------------------
IdIndAlt=2#1000
IdIndNeu=2#0100

IdInd=$(($IdIndNeu | $IdIndAlt))
echo -e "obase=2;$IdInd" | bc
------------------------------------

die " hatte ich nur hier vergessen...

Ausgabe:
----------------------------------
clone: .../script > sh -x neu_csh_probe
+ IdIndAlt=2#1000
+ IdIndNeu=2#0100
+ IdInd=12
+ bc
+ echo -e obase=2;$IdInd
syntax error on line 1,
----------------------------------

mfg clone
 
Zuletzt bearbeitet:
da fehlt ein ' oder "

Code:
echo -e 'obase=2;$IdInd | bc

so bitte: echo -e 'obase=2;$IdInd' | bc
oder eben: echo -e "obase=2;$IdInd" | bc
 
sorry hatte ich nur hier vergessen im script stimmen die ",
aber die ausgabe funzt leider noch immer nicht.

macht nichts es funktioniert die weiterverarbeitung:
-------------------------------------------------------
IdIndAlt=2#1000
IdIndNeu=2#0100


IdInd=$(($IdIndNeu | $IdIndAlt))

AgB=$(($IdInd&2#0100))
-----------------------------------------------------

Ausgabe:
------------------------------------------
+ IdIndAlt=2#1000
+ IdIndNeu=2#0100
+ IdInd=12
+ AgB=4
------------------------------------------

thx


mf clone
 
so gehts bei mir
sript t.sh:
Code:
IdIndAlt=2#1000
IdIndNeu=2#0100

IdInd=$(($IdIndNeu | $IdIndAlt))
AgB=$(($IdInd&2#0100))

echo -e "obase=2;$IdInd" | bc
echo -e "obase=2;$AgB" | bc

ausgabe:
Code:
$ ./t.sh
1100
100
 
also so funktionierts auch bei mir aber mit einer fehlermeldung:

-----------------------------------------
IdIndAlt=2#1000
IdIndNeu=2#0100


IdInd=$(($IdIndNeu | $IdIndAlt))

AgB=$(($IdInd&2#0100))

echo -e "ibase=2; obase=2;$IdInd" | bc
-----------------------------------------

Ausgabe:
-----------------------------------------
+ IdIndAlt=2#1000
+ IdIndNeu=2#0100
+ IdInd=12
+ AgB=4
+ bc
+ echo -e ibase=2;obase=2;12
syntax error on line 1,
1100
-----------------------------------------


mfg clone
 
keine ahnung was da los sein kann
probier mal
Code:
#!/pfad_zum_script/
in die 1. zeile zu schreiben
vielleicht hilft das
 
Zuletzt bearbeitet:
Code:
#!/pfad_zum_script/

leider das selbe

Ausgabe:
-----------------------------------------
+ IdIndAlt=2#1000
+ IdIndNeu=2#0100
+ IdInd=12
+ AgB=4
+ bc
+ echo -e ibase=2;obase=2;12
syntax error on line 1,
1100
-----------------------------------------

aber thx

mfg clone
 

Ähnliche Themen

Wie komme ich an den Inhalt des Inhalts einer Variable?

Werte in 2 Variablen subtrahieren

gzip?

Java Development Kit Installation

sh: no job control in this shell (KDE startet nicht)

Zurück
Oben