Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
jaguar
- Beiträge: 54
- Registriert: 17.08.2008 19:07:07
- Wohnort: Germany
Beitrag
von jaguar » 15.10.2011 22:35:50
Hey,
Ich mache folgendes "TUT"
http://www.tutorials.de/content/1190-un ... ripte.html
und bin bei Abschnitt "-- 6 aus 49 --" angelangt.
Das Script ist dies:
Code: Alles auswählen
clear
echo `touch lotto_temp`
i=0
while [ $i -lt 6 ]
do
rnd=$((RANDOM % 49 + 1))
echo $rnd >> lotto_temp
i=`expr $i + 1`
done
echo `sort -n lotto_temp`
echo `rm lotto_temp`
als Ausgabe auf meinem PC bekomme ich aber:
Was mache ich falsch?
Wenn ich dies auserhalb des Scripts ausführe:
bekomme ich z.B. folgendes Ergebnis:
-
Cae
- Beiträge: 6349
- Registriert: 17.07.2011 23:36:39
- Wohnort: 2130706433
Beitrag
von Cae » 15.10.2011 22:42:33
jaguar hat geschrieben:Wenn ich dies auserhalb des Scripts ausführe:
Schreib' das mal als Skript: Bei mir war der Output reproduzierbar "1". Keine Ahnung, warum
Gruß Cae
--Edit: eeeek - deine normale Shell wird wohl die Bash sein, die Script-Shell vllt aber sh? RANDOM scheint eine Funktion der Bash zu sein!
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier
-
jaguar
- Beiträge: 54
- Registriert: 17.08.2008 19:07:07
- Wohnort: Germany
Beitrag
von jaguar » 15.10.2011 22:47:35
Ich habe auch schon ein:
eingefügt, um zu sehen, wie es zwischen durch ausschaut...
Script:
Code: Alles auswählen
#!/bin/bash
clear
echo `touch lotto_temp`
i=0
while [ $i -lt 6 ]
do
rnd=$((RANDOM % 49 + 1))
echo $rnd
echo $rnd >> lotto_temp
i=`expr $i + 1`
done
echo `sort -n lotto_temp`
echo `rm lotto_temp`
Ergebnis:
-
jaguar
- Beiträge: 54
- Registriert: 17.08.2008 19:07:07
- Wohnort: Germany
Beitrag
von jaguar » 15.10.2011 22:56:08
Ich habe es geschaft!
Datei mit
für jeden ausführbar gemacht!
und das File direkt ausgeführt!
Output:
Am Kopf des Files muss aber natürlich
stehen! und nicht:
Danke für den Tipp! mit Bash bzw Sh
-
Cae
- Beiträge: 6349
- Registriert: 17.07.2011 23:36:39
- Wohnort: 2130706433
Beitrag
von Cae » 15.10.2011 22:57:18
Code: Alles auswählen
foo@debian:~$ cat test
rnd=$((RANDOM % 49 + 1))
echo $rnd
foo@debian:~$ sh test
1
foo@debian:~$ bash test
21
Mach' dir mal Gedanken darüber.
Gruß Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier
-
jaguar
- Beiträge: 54
- Registriert: 17.08.2008 19:07:07
- Wohnort: Germany
Beitrag
von jaguar » 15.10.2011 23:10:09
Aber warum ist das so?
Mit Bash geht es und mit Sh nicht.
Wo liegt da der Unterschied (zwischen den beiden)? Ist das eine "minimaler" als das andere?
-
TRex
- Moderator
- Beiträge: 8333
- Registriert: 23.11.2006 12:23:54
- Wohnort: KA
Beitrag
von TRex » 15.10.2011 23:17:55
Die bash ist um einiges funktionsreicher als sh, braucht dafür aber um einiges mehr an Resourcen. In den meisten Fällen wirst du das aber nicht merken
Die ganzen Komfortfunktionen wie Autovervollständigung usw sind alles Funktionen der bash.
-
jaguar
- Beiträge: 54
- Registriert: 17.08.2008 19:07:07
- Wohnort: Germany
Beitrag
von jaguar » 15.10.2011 23:24:44
Danke
und interessant...
-
catdog2
- Beiträge: 5352
- Registriert: 24.06.2006 16:50:03
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von catdog2 » 15.10.2011 23:35:47
/bin/sh hat früher auch nur auf
bash verlinkt, mittlerweile ist es aber die
dash
Unix is user-friendly; it's just picky about who its friends are.