Portál AbcLinuxu, 30. října 2025 23:13
Kedže pre Slovenskú republiku bol stanovený 8.7.2008 konverzný kurz pre zavedenie eura k 1.1.2009 (1€=30,126 SKK), začinam si (chcem/nechcem) na euro zvykať. Snažím sa všetko prepočítavať a kedže sa mi nechce za každým spúšťať kalkulačku a chcel som niečo jednoduché do terminálu (a relatívne presné *) tak som si to ubaštil v bashi.
#!/bin/bash # sk2euro.sh by feco(at)7crows(dot)net, 2008 if test -z "$1" then echo "using: sk2euro slovak_koruna" echo "divided by ~30" else a=`expr $1 / 30` echo "~$a€" fi
* - delí to iba 30timy takze je to IBA +/- presné (hlavne použivam pri prepočitavaní väčších súm) chcel by som ešte neskôr spraviť verziu ktorá by brala aj "real" vstup a dávala "real" výstup ale to sa musím do toho viac zavrtať, kedže toto som mal iba narýchlo hotové
UPDATE - variácie
#!/bin/bash
function calc() {
echo "scale=2;" "$@" | bc -q
}
if [ -z "$1" ]; then
echo "syntax: $0 hodnota_skk"
exit 1
fi
KURZ="30.126"
echo $(calc $1/$KURZ)
#!/bin/bash
function div() {
INT=$(($1/$2))
MOD=$(($1%$2))
FRAC=$((${MOD}0/$2))
MOD=$((${MOD}0%$2))
FRAC=$FRAC$((${MOD}0/$2))
MOD=$((${MOD}0%$2))
echo $INT.$FRAC
}
if [ -z "$1" ]; then
echo "syntax: $0 hodnota_skk"
exit 1
fi
KURZ="30126"
echo $(div ${1}000 $KURZ)
by slush (python) - "obojstranná verzia"
#!/usr/bin/env python
import sys
if len(sys.argv) < 2:
print "Usage: sk2eu koruna [eu/sk, default sk]"
sys.exit()
if len(sys.argv) == 2 or sys.argv[2] == 'sk':
print "~ %.02f eu" % (float(sys.argv[1]) / 30.126)
else:
print "~ %.02f sk" % (float(sys.argv[1]) * 30.126)
by happy barney (perl) - "obojstranná verzia"
#!/usr/bin/perl
# ln -s file sk2eu
# ln -s file eu2sk
use File::Basename;
my $name = basename $0;
print "Usage: $name suma\n" and exit unless @ARGV;
printf "~ %.02f %s\n",
$ARGV[0] * { sk2eu => 1/30.126, eu2sk => 30.126}->{$name},
{ sk2eu => 'eu', eu2sk => 'sk' }->{$name}
;
by Viliam Púčik (C) - "obojstranná verzia"
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char * argv[]) {
if (argc == 2) {
printf("%s SK: %f EURO\n", argv[1], atof(argv[1])/30.126f);
}
return 0;
}
Tiskni
Sdílej:
Ale abych se podržel tématu:
#!/bin/bash
function calc() {
echo "scale=2;" "$@" | bc -q
}
if [ -z "$1" ]; then
echo "syntax: $0 hodnota_skk"
exit 1
fi
KURZ="30.126"
echo $(calc $1/$KURZ)
A pokud nemáte nainstalovánu kalkulačku bc, můžete postupovat takto:
#!/bin/bash
function div() {
INT=$(($1/$2))
MOD=$(($1%$2))
FRAC=$((${MOD}0/$2))
MOD=$((${MOD}0%$2))
FRAC=$FRAC$((${MOD}0/$2))
MOD=$((${MOD}0%$2))
echo $INT.$FRAC
}
if [ -z "$1" ]; then
echo "syntax: $0 hodnota_skk"
exit 1
fi
KURZ="30126"
echo $(div ${1}000 $KURZ)
Přechod na euro vám nezávidím, doufám, že u nás k němu nedojde nikdy.No na výber nemáme, ani referendum nebolo, proste musíme (?!)... A čo bude ? Netuším... Ešte to skúsim nahodiť v pascale - v bashi niesom doma, a po vašom príklade mi teraz pride dosť zložitý na niečo tak jednoducho zadané (s realnymi číslami)Ale abych se podržel tématu:
A to že si dostal o 20% méně (v přepočtu) je sice pravda, ale je to něco s čím se musí počítat, stejně jako s inflací. Základní poučka o investicích zní: Investujte v měně ve které hodláte utrácet, pokud opravdu dobře nevíte co děláte, ne?
Přechod na euro vám nezávidím, doufám, že u nás k němu nedojde nikdy.A i kdyby došlo, já už to budu mít natrénované. Tento Silvestr budu "oslavovat" v práci při migraci![]()
#!/usr/bin/env python
import sys
if len(sys.argv) < 2:
print "Usage: sk2eu koruna [eu/sk, default sk]"
sys.exit()
if len(sys.argv) == 2 or sys.argv[2] == 'sk':
print "~ %.02f eu" % (float(sys.argv[1]) / 30.126)
else:
print "~ %.02f sk" % (float(sys.argv[1]) * 30.126)
Pouziti:
$ sk2eu 31
~ 1.03 eu
$ sk2eu 31 sk
~ 1.03 eu
~$ ./sk2eu 31 eu
~ 933.91 sk
#!/usr/bin/perl
# ln -s <file> sk2eu
# ln -s <file> eu2sk
use File::Basename;
my $name = basename $0;
print "Usage: $name <suma>\n" and exit unless @ARGV;
printf "~ %.02f %s\n",
$ARGV[0] * { sk2eu => 1/30.126, eu2sk => 30.126}->{$name},
{ sk2eu => 'eu', eu2sk => 'sk' }->{$name}
;
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char * argv[]) {
if (argc == 2) {
printf("%s SK: %f EURO\n", argv[1], atof(argv[1])/30.126f);
}
return 0;
}
(zijem v Prahe, no
)
#!/usr/bin/env zsh
if [ $# -eq 1 ]
then
echo $(($1/(30.126))) €
else
echo "Usage: $0 SKK"
fi
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.