Firefox64
Anmeldungsdatum: 4. August 2010
Beiträge: 23
|
Tag zusammen! Ich hab mich durch unzählige Forenbeiträge und TuT´s gewühlt komme aber einfach nicht weiter... Folgender Code:
clear
echo "Taschenrechner"
echo "=============="
echo ""
echo "Möchten Sie 1. Addieren oder 2. Subtrahieren?"
read auswahl
if $auswahl==1
then
{
echo "Dieser Rechner kann zwei ganze Zahlen Addiren"
echo "Geben Sie die zu Addierenden Zahlen ein"
echo "Geben Sie ein ersten Wert ein:"
read z1
echo "Geben sie den zwiten Wert ein"
read z2
erg=`expr $z1 + $z2`
echo "Das Ergebnis ist $erg"
}
fi
if $auswahl==2
then
{
echo "Dieser Rechner kann zwei ganze Zahlen Subtrahieren"
echo "Geben Sie den Wert ein:"
read z1
echo "Was wollen Sie abziehen?"
read z2
erg=`expr $z1 - $z2`
echo "Das Ergebnis ist $erg"
}
fi Das Problem liegt glaube ich ihrgent wo in der if verzweigung...
Ich habe schon einige Programier erfahrungen mit C und wollte mich jetzt mal an die Script-Spachen wagen^^ Hoffe ihr könnt mir helfen... mfg FF64
|
John_W
Anmeldungsdatum: 10. Juli 2010
Beiträge: 571
|
Du musst test ("[" und "]") benutzen:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 | clear
echo "Taschenrechner"
echo "=============="
echo ""
echo "Möchten Sie 1. Addieren oder 2. Subtrahieren?"
read auswahl
if [ "$auswahl" -eq 1 ]
then
{
echo "Dieser Rechner kann zwei ganze Zahlen Addiren"
echo "Geben Sie die zu Addierenden Zahlen ein"
echo "Geben Sie ein ersten Wert ein:"
read z1
echo "Geben sie den zweiten Wert ein"
read z2
erg=`expr $z1 + $z2`
echo "Das Ergebnis ist $(($z1 + $z2))"
}
elif [ "$auswahl" -eq 2 ]
then
{
echo "Dieser Rechner kann zwei ganze Zahlen Subtrahieren"
echo "Geben Sie den Wert ein:"
read z1
echo "Was wollen Sie abziehen?"
read z2
echo "Das Ergebnis ist $(($z1 - $z2))"
}
fi
|
|
Firefox64
(Themenstarter)
Anmeldungsdatum: 4. August 2010
Beiträge: 23
|
ok danke jetzt klapt es^^ was macht das -eq genau???
|
Hello_World
Anmeldungsdatum: 13. Juni 2006
Beiträge: 3620
|
Firefox64 schrieb: Ich habe schon einige Programier erfahrungen mit C und wollte mich jetzt mal an die Script-Spachen wagen^^
Dann würde ich dringend empfehlen, von Shell-Scripten Abstand zu nehmen und eine vernünftige Sprache zu wählen; Shell-Scripte sind sehr beschränkt in ihren Möglichkeiten und dazu noch kompliziert. Die üblichen Verdächtigen sind Python, Ruby und Perl.
|
agaida
Anmeldungsdatum: 24. Februar 2010
Beiträge: 3348
Wohnort: Bielefeld
|
Was der Name aussagt: -eq = equal Edit: [ $variable=="1" ] sollte auch gehen.
|
Firefox64
(Themenstarter)
Anmeldungsdatum: 4. August 2010
Beiträge: 23
|
Hello World schrieb: Firefox64 schrieb: Ich habe schon einige Programier erfahrungen mit C und wollte mich jetzt mal an die Script-Spachen wagen^^
Dann würde ich dringend empfehlen, von Shell-Scripten Abstand zu nehmen und eine vernünftige Sprache zu wählen; Shell-Scripte sind sehr beschränkt in ihren Möglichkeiten und dazu noch kompliziert. Die üblichen Verdächtigen sind Python, Ruby und Perl.
Jo muss man mal gucken...
Ihrgent welche Tipps womit man anfangen könnte?
|
Antiqua
Anmeldungsdatum: 30. Dezember 2008
Beiträge: 4534
|
man könnte das auch (meiner Meinung nach) schöner mit case lösen:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 | #! /bin/bash
clear
echo "Taschenrechner"
echo "=============="
echo ""
echo "Möchten Sie 1. Addieren oder 2. Subtrahieren?"
read auswahl
case "$auswahl" in
# fängt die Eins ab
'1')
echo "Dieser Rechner kann zwei ganze Zahlen addieren"
echo "Geben Sie die zu addierenden Zahlen ein"
echo "Geben Sie ein ersten Wert ein:"
read z1
echo "Geben sie den zweiten Wert ein"
read z2
erg=`expr $z1 + $z2`
echo "Das Ergebnis ist $erg"
;;
# fängt die 2 ab
'2')
echo "Dieser Rechner kann zwei ganze Zahlen Subtrahieren"
echo "Geben Sie den Wert ein:"
read z1
echo "Was wollen Sie abziehen?"
read z2
erg=`expr $z1 - $z2`
echo "Das Ergebnis ist $erg"
;;
# fängt alle anderen Eingaben ab
*)
echo "bitte Auswählen durch drücken von"
echo "1 (Eins) oder 2 (Zwei)"
esac
|
|
Hello_World
Anmeldungsdatum: 13. Juni 2006
Beiträge: 3620
|
Da gibt es ein Tutorial für Python 3.1 und dort eines für Python 2.7. Python 3 ist die Zukunft, aber die meisten derzeit vorhandenen Programme, Bibliotheken und Frameworks verwenden noch Python 2. Es ist aber letztlich nicht so wichtig, welche Version man nimmt, da die Unterschiede nicht sehr groß sind.
|
Firefox64
(Themenstarter)
Anmeldungsdatum: 4. August 2010
Beiträge: 23
|
danke! Werds mir mal näher ansehen!
|
tulpi
Anmeldungsdatum: 26. April 2007
Beiträge: 100
|
erg=`expr $z1 + $z2` erg=$(expr $z1 + $z2)
Muss man die Finger nicht so verbiegen 😬
|
John_W
Anmeldungsdatum: 10. Juli 2010
Beiträge: 571
|
Bash hat ein Builtin, das sollte genutzt werden. Insbesondere in Schleifen macht sich expr in der Laufzeit bemerkbar; expr am Bestem immer meiden, das ist ein Tool für mini-Shells ohne große Funktionalitäten.
|
tulpi
Anmeldungsdatum: 26. April 2007
Beiträge: 100
|
John W schrieb: Bash hat ein Builtin, das sollte genutzt werden. Insbesondere in Schleifen macht sich expr in der Laufzeit bemerkbar; expr am Bestem immer meiden, das ist ein Tool für mini-Shells ohne große Funktionalitäten.
z=1;b=2;echo $(( $z + $b ))
|
John_W
Anmeldungsdatum: 10. Juli 2010
Beiträge: 571
|
Hatte ich doch schon gepostet (Zeile 22 hatte ich vergessen rauszunehmen...).
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17622
Wohnort: Berlin
|
Man kann das Skript etwa halbieren, weil beide Äste fast das gl. machen: einen 1. und 2. Wert erfragen, und diese zu einer Rechnung verknüpfen, die ausgeführt wird.
#!/bin/bash
declare -a nam
declare -a op
nam=("foo" "addieren" "subtrahieren")
op=('x' '+' '-')
echo -e "Taschenrechner\n========\nMöchten Sie 1. ${nam[1]} oder 2. ${nam[2]}?"
read x
echo "Dieser Rechner kann zwei ganze Zahlen "${nam[$x]}
echo "Geben Sie die zu "${nam[$x]]}"nden Zahlen ein"
echo "Geben Sie ein ersten Wert ein:"
read a
if (( $x == 1 ))
then
echo "Geben sie den zweiten Wert ein"
elif (( $x == 2 ))
then
echo "Was wollen Sie abziehen?"
fi
read b
echo "Das Ergebnis ist" $(($a ${op[$x]} $b))
Eleganter wäre es vielleicht, je nach $x == 1 oder 2 eine Funktion aufzurufen:
getAndCalc ("addieren", "Geben sie den zweiten Wert ein" "+")
# oder
getAndCalc ("subtrahieren", "Was wollen Sie abziehen?" "-")
Nennt sich das DRY-Principle.
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17622
Wohnort: Berlin
|
Hello World schrieb: Dann würde ich dringend empfehlen, von Shell-Scripten Abstand zu nehmen und eine vernünftige Sprache zu wählen; Shell-Scripte sind sehr beschränkt in ihren Möglichkeiten und dazu noch kompliziert. Die üblichen Verdächtigen sind Python, Ruby und Perl.
Shellscripte sind die Linugua-Franca unter Linux. Für viele kl. Aufgaben ist das genau das richtige. Dringende Empfehlungen halte ich da für übertriebenen Alarmismus.
|