Portál AbcLinuxu, 25. května 2025 09:05
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:
#!/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:
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; }
#!/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.