Hallo, Am Sun, 10 Apr 2011, Thomas Moritz schrieb:
Wie kann ich 'i2cget -y 0 0x27 0', dessen Ausgabe ich um 0x strippen muss, in den String einbauen? (statt FC)
$(( `i2cget -y 0 0x27 0 | cut -d 'x' -f2` ))
passt da wohl nicht ganz, seidenn ich habe mich in der Nacht vertippt. Es ist prinzipiell nicht wichtig, aber interessant waere es schon :-)
bin=$( { echo "ibase=16; obase=2;"; i2cget -y 0 0x27 0 | cut -d 'x' -f2 | tr '[a-f]' '[A-F]' } | bc) das 'tr' nur zur Sicherheit, weil bc nur Uppercase-Hex-A-F frisst, und ich i2cget nicht kenne, ob das nicht evtl. auch mal lowercase ausgibt. Getestet mit: { echo "ibase=16; obase=2;"; echo "0xFC" | cut -d 'x' -f2; } | bc 11111100 BTW: wenn du direkt noch was vor dem Bin-String haben willst kannst du auch das 'print' von bc verwenden, bspw: $ { echo -n "ibase=16; obase=2; b="; echo "0xFC" | cut -d 'x' -f2; echo 'print "foo\n", b, "b\nfoobar\n"'; } | bc foo 11111100b foobar Alternativ oder sogar besser: printf 'ibase=16; obase=2; b=%s; print "foo\n", b, "b\nbar\n"\n' \ "$(echo "0xFC" | cut -d 'x' -f2 | tr '[a-f]' '[A-F]')" \ | bc Die inneren "\n" (in den "") sind jew. für die Umbrüche, die bc als '\n' zu sehen und somit als Umbrüche ausgeben soll, die '\n' (in '') sind für die Eingabe an bc. Anders formatiert: printf 'ibase=16; obase=2; b=%s; print "foo\n", b, "b\nbar\n"; ' "$(echo "0xFC" | cut -d 'x' -f2 | tr '[a-f]' '[A-F]')" \ | bc Oder übersichtlicher mit Shell-Variable, dafür ohne bc-Variable ("b"): HEX="$(echo "0xFC" | cut -d 'x' -f2 | tr '[a-f]' '[A-F]')"; BIN="$(printf 'ibase=16; obase=2; print "foo:", %s, "b:bar\n";\n' "$HEX" | bc)" $ echo $BIN foo:11111100b:bar Oder: BINFMT='ibase=16; obase=2; print "foo:", %s, "b:bar\n";\n'; HEX="$(echo "0xFC" | cut -d 'x' -f2 | tr '[a-f]' '[A-F]')"; BIN="$(printf "$BINFMT" "$HEX" | bc)" Ich hoffe, du kannst dir damit was les- und wartbares mit basteln ;) HTH, -dnh -- "Lege die eine Hand in die Gefriertruhe und die andere auf eine heiße Herdplatte. Im Durchschnitt ist das dann ein angenehmes Gefühl." [CB's Lehrer erklaert den "Durchschnitt"] -- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org