PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bitweises ODER in der shell?



clone
21.06.2004, 14:16
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

snax
21.06.2004, 14:39
hm eigentlich sollte das so funzen...



echo $((1000|0100))

dort kommt aber 1000 heraus X(

clone
21.06.2004, 14:46
echo $((1000|0100))

habe ich schon probiert als ergebniss bekomme 1004?!!

snax
21.06.2004, 14:49
hä? 8o

versteh ich nicht...

snax
21.06.2004, 16:10
ok habe nochmal folgendes probiert :)



echo "ibase=2; obase=2; $((1000|0100))" | bc

also eingabe und ausgabe, alles auf basis 2, spuckt aber auch wieder 1000 aus.



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.

cremi
21.06.2004, 17:35
aber ich würd sagen



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

jetzt must du nur noch statt 12 was mit ((v1|v2)) hineinschrieben
bzw.


v3=$((v1|v2))

und dann irgendwie


echo -e 'obase=2;$v3' | bc


ich kanns leider nicht ausprobiern aber geht sicher irgendwie so

snax
22.06.2004, 05:57
ich kanns leider nicht ausprobiern aber geht sicher irgendwie so

jep so funzt es :)



snax@superpc:~> v1=2#1000 ; v2=2#0100
snax@superpc:~> v3=$((v1|v2))
snax@superpc:~> echo -e "obase=2;$v3" | bc
1100

clone
22.06.2004, 06:51
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

snax
22.06.2004, 06:55
da fehlt ein ' oder "



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

so bitte: echo -e 'obase=2;$IdInd' | bc
oder eben: echo -e "obase=2;$IdInd" | bc

clone
22.06.2004, 07:19
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

cremi
22.06.2004, 11:59
so gehts bei mir
sript t.sh:


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:


$ ./t.sh
1100
100

clone
22.06.2004, 12:16
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

cremi
22.06.2004, 12:31
keine ahnung was da los sein kann
probier mal

#!/pfad_zum_script/
in die 1. zeile zu schreiben
vielleicht hilft das

clone
22.06.2004, 15:03
#!/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