Linux: mit Kommastelle rechnen unter Freetz

greg54321

Neuer User
Mitglied seit
5 Jun 2009
Beiträge
30
Punkte für Reaktionen
0
Punkte
0
Hallo!
ich habe unter Linux dieses kleine funktionierende Skript:

auf der Box scheint es aber kein bc zu geben. Gibts es Alternativen um mit gebrochenen Zahlen zu rechnen und zu vergleichen? bzw welche Sachen muss ich mit ins Image packen?
Code:
VAR_A="5.1"


echo "VAR_A ist ${VAR_A}"

if (( $(echo "$VAR_A <= 4.5" | bc -l) ))
then
  echo 'unter 4.5'
else
  if (( $(echo "$VAR_A >= 5.5" | bc -l) ))
  then
    echo 'ueber 5.5'
  else
    echo 'zwischen 4.5 bis 5.5'
  fi
fi
 
Hallo

Such und aktiviere (make menuconfig) das Paket: bc
Schau auch mal bei den busybox Tools nach: printf
Für Floatingpoint Rechnereien lies dies: KlickKlack
 
Zuletzt bearbeitet:
Nee, hast Recht, ist gar nicht bei freetz dabei.
Wenn ich jetzt wüsste wie man den Sourcecode einpflegt...
Sorry, aber dann weiss ich auch nicht weiter.
 
Gibts es Alternativen um mit gebrochenen Zahlen zu rechnen und zu vergleichen? bzw welche Sachen muss ich mit ins Image packen?
Z. B. mit awk und/oder dc aus der busybox (in Freetz):
Code:
awk 'BEGIN{print 1.5/2}'
dc
dc expression...

Tiny RPN calculator. Operations: +, add, -, sub, *, mul, /, div, %, mod, **, exp, and, or, not, eor, p - print top of the stack (without altering the stack), f - print entire stack, o - pop the value and set output radix (value must be 10 or 16). Examples: 'dc 2 2 add' -> 4, 'dc 8 8 * 2 2 + /' -> 16.
 
sich in dc rein zu fitzen übersteigt meinen Intellekt.
Da sieht mir awk (im Verhältnis) noch schneller zu Begreifen aus... Aber auch dafür werde ich ne Weile brauchen.

Wie kann ich mir mein eigenes bc bauen?

Code:
cd /tmp && wget 'http://ftp.gnu.org/gnu/bc/bc-1.06.tar.gz' 
tar -xvzf /tmp/bc-1.06.tar.gz
cd /tmp/bc-1.06/
export PATH=~/.freetz/freetz-stable-2.0/toolchain/target/bin:$PATH
LDFLAGS=-static ./configure --build=i386-linux-gnu --target=mipsel-linux --host=mipsel-linux
Was muss ich hiernach noch tun? Wie baue ich das executable für die Box und wo finde ich das dann?
 
Was muss ich hiernach noch tun?
bc braucht evtl. u. a. die libtinfo. Hast Du diese library auf deiner Box?
Code:
:~$ ldd $(which bc)
	linux-gate.so.1 =>  (0x00914000)
	libreadline.so.6 => /lib/i386-linux-gnu/libreadline.so.6 (0x003bc000)
	libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0x0040c000)
	[color=red]libtinfo.so.5[/color] => /lib/i386-linux-gnu/libtinfo.so.5 (0x0062a000)
	/lib/ld-linux.so.2 (0x006f2000)
 
Auf der Box hab ich die derzeit nicht. Ist es richtig, das ich durch das statische bauen, alle libs mit in der exe habe?
Ich habs leider noch nie von hand gemacht: Wie muss ich nach dem obigen weiterbauen? make? make install? wie geht das? Danke vorab!
 
Moin

Prima, das FP berechnen mit awk kannte ich noch nicht, danke dafür.

Mach ein "make menuconfig" und "studiere" mal die "busybox applets".
Alternativ kannst du auch eine vollbestückte busybox, mit allen drum und dran,
von der Entwicklerseite ausprobieren: busybox.net/download/binaries
Für Fritz!Boxen benötigst du entweder die MIPS oder die MIPSEL, je nach CPU der Box.
Schau mal was meine alles eingebaut hat...
Code:
deepbase # ./busybox
BusyBox v1.21.1 (2013-07-08 10:56:01 CDT) multi-call binary.
BusyBox is copyrighted by many authors between 1998-2012.
Licensed under GPLv2. See source distribution for detailed
copyright notices.

Usage: busybox [function [arguments]...]
   or: busybox --list[-full]
   or: busybox --install [-s] [DIR]
   or: function [arguments]...

        BusyBox is a multi-call binary that combines many common Unix
        utilities into a single executable.  Most people will create a
        link to busybox for each function they wish to use and BusyBox
        will act like whatever it was invoked as.

Currently defined functions:
        [, [[, acpid, add-shell, addgroup, adduser, adjtimex, arp, arping, ash, awk, base64, basename, beep,
        blkid, blockdev, bootchartd, brctl, bunzip2, bzcat, bzip2, cal, cat, catv, chat, chattr, chgrp, chmod,
        chown, chpasswd, chpst, chroot, chrt, chvt, cksum, clear, cmp, comm, conspy, cp, cpio, crond, crontab,
        cryptpw, cttyhack, cut, date, dc, dd, deallocvt, delgroup, deluser, depmod, devmem, df, dhcprelay,
        diff, dirname, dmesg, dnsd, dnsdomainname, dos2unix, du, dumpkmap, dumpleases, echo, ed, egrep, eject,
        env, envdir, envuidgid, ether-wake, expand, expr, fakeidentd, false, fbset, fbsplash, fdflush,
        fdformat, fdisk, fgconsole, fgrep, find, findfs, flock, fold, free, freeramdisk, fsck, fsck.minix,
        fsync, ftpd, ftpget, ftpput, fuser, getopt, getty, grep, groups, gunzip, gzip, halt, hd, hdparm, head,
        hexdump, hostid, hostname, httpd, hush, hwclock, id, ifconfig, ifdown, ifenslave, ifplugd, ifup, inetd,
        init, insmod, install, ionice, iostat, ip, ipaddr, ipcalc, ipcrm, ipcs, iplink, iproute, iprule,
        iptunnel, kbd_mode, kill, killall, killall5, klogd, last, less, linux32, linux64, linuxrc, ln,
        loadfont, loadkmap, logger, login, logname, logread, losetup, lpd, lpq, lpr, ls, lsattr, lsmod, lsof,
        lspci, lsusb, lzcat, lzma, lzop, lzopcat, makedevs, makemime, man, md5sum, mdev, mesg, microcom, mkdir,
        mkdosfs, mke2fs, mkfifo, mkfs.ext2, mkfs.minix, mkfs.vfat, mknod, mkpasswd, mkswap, mktemp, modinfo,
        modprobe, more, mount, mountpoint, mpstat, mt, mv, nameif, nanddump, nandwrite, nbd-client, nc,
        netstat, nice, nmeter, nohup, nslookup, ntpd, od, openvt, passwd, patch, pgrep, pidof, ping, ping6,
        pipe_progress, pivot_root, pkill, pmap, popmaildir, poweroff, powertop, printenv, printf, ps, pscan,
        pstree, pwd, pwdx, raidautorun, rdate, rdev, readahead, readlink, readprofile, realpath, reboot,
        reformime, remove-shell, renice, reset, resize, rev, rm, rmdir, rmmod, route, rpm, rpm2cpio, rtcwake,
        run-parts, runlevel, runsv, runsvdir, rx, script, scriptreplay, sed, sendmail, seq, setarch,
        setconsole, setfont, setkeycodes, setlogcons, setserial, setsid, setuidgid, sh, sha1sum, sha256sum,
        sha3sum, sha512sum, showkey, slattach, sleep, smemcap, softlimit, sort, split, start-stop-daemon, stat,
        strings, stty, su, sulogin, sum, sv, svlogd, swapoff, swapon, switch_root, sync, sysctl, syslogd, tac,
        tail, tar, tcpsvd, tee, telnet, telnetd, test, tftp, tftpd, time, timeout, top, touch, tr, traceroute,
        traceroute6, true, tty, ttysize, tunctl, udhcpc, udhcpd, udpsvd, umount, uname, unexpand, uniq,
        unix2dos, unlzma, unlzop, unxz, unzip, uptime, users, usleep, uudecode, uuencode, vconfig, vi, vlock,
        volname, wall, watch, watchdog, wc, wget, which, who, whoami, whois, xargs, xz, xzcat, yes, zcat, zcip
Sogar --install ist dabei: mkdir bin; busybox --install -s bin
Der Switch -s erstellt Softlinks auf die busybox und ist deshalb wesentlich platzsparender.
Code:
deepbase # ls bin|wc
      347       347      2710
Das sind 347 Applets! Ich liebe die busybox.
:rolleyes:

Code:
deepbase # awk 'BEGIN{print 1.5/2}'
0.75
 
Zuletzt bearbeitet:
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.