Bash Zuweisungen
Klara
- webserver
Hi!
warum erhalte ich bei folgenden Konstrukt in ein Bash Skript ein Fehler?
getVersion(){
echo 5
}
test(){
max=10
version=`getVersion`
version=$[$version+1];
while [ $version -le $max ] ; do
echo $version
version=$[$version+1];
done
}
% sh ./file.sh test
[: 66: Illegal number: $[5+1]
auf der Konsole, wenn ich es wie folgt mache, erhalte ich kein Fehler#
% max=10; version=5; version=$[$version+1]; while [ $version -le $max ] ; do echo $version; version=$[$version+1]; done;
6
7
8
9
10
über jeden Tipp bin ich dankbar
Klara
Hello,
warum erhalte ich bei folgenden Konstrukt in ein Bash Skript ein Fehler?
Ist es denn wirklich ein bash-Script?
Zeig doch mal bitte die Shebang-Zeile des Scriptes
getVersion(){
echo 5
}
test(){
max=10
version=getVersion
version=$[$version+1];
while [ $version -le $max ] ; do
echo $version
version=$[$version+1];
done
}
Denn die nächste Zeile deutet darauf hin, dass Du nicht bash, sondern sh verwendet hast
> % sh ./file.sh test
> [: 66: Illegal number: $[5+1]
>
> auf der Konsole, wenn ich es wie folgt mache, erhalte ich kein Fehler#
> % `max=10; version=5; version=$[$version+1]; while [ $version -le $max ] ; do echo $version; version=$[$version+1]; done;`{:.language-sh}
> 6
> 7
> 8
> 9
> 10
>
> über jeden Tipp bin ich dankbar
Schaun wir mal, dann sehn wir schon ;-)
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg

--
Nur selber lernen macht schlau
<http://bergpost.annerschbarrich.de>
Hi Tom!
warum erhalte ich bei folgenden Konstrukt in ein Bash Skript ein Fehler?
Ist es denn wirklich ein bash-Script?
Zeig doch mal bitte die Shebang-Zeile des Scriptes
die Shebang-Zeile lautet
#!/bin/bash
getVersion(){
echo 5
}
test(){
max=10
version=getVersion
version=$[$version+1];
while [ $version -le $max ] ; do
echo $version
version=$[$version+1];
done
}
>
>
> Denn die nächste Zeile deutet darauf hin, dass Du nicht bash, sondern sh verwendet hast
>
> > % sh ./file.sh test
> > [: 66: Illegal number: $[5+1]
wenn ich es wie folgt aufrufe, funktioniert es
bash ./file.sh test
hm...
gibt es eine Möglichkeit, dass es auch mit
sh ./file.sh
ohne Fehler läuft?
Klara
Hallo,
wenn ich es wie folgt aufrufe, funktioniert es
bash ./file.sh test
hm...gibt es eine Möglichkeit, dass es auch mit
sh ./file.sh
ohne Fehler läuft?
sorge dafür, dass beim Aufruf von sh bash und nicht etwa eine andere Shell aufgerufen wird :-)
Freundliche Grüße
Vinzenz
Hi Vinzenz!
wenn ich es wie folgt aufrufe, funktioniert es
bash ./file.sh test
hm...gibt es eine Möglichkeit, dass es auch mit
sh ./file.sh
ohne Fehler läuft?sorge dafür, dass beim Aufruf von sh bash und nicht etwa eine andere Shell aufgerufen wird :-)
das liegt leider nicht in meiner Macht, der Sysadmin wird das sicherlich nicht umstellen.
Wie müßte die Berechnung aussehen, damit sie relativ Shellunabhängig ist?
Klara
Hallo,
Wie müßte die Berechnung aussehen, damit sie relativ Shellunabhängig ist?
wenn es shellunabhängig sein soll, dann darfst Du kein Shellskript nehmen :-)
Warum wird es überhaupt mit sh aufgerufen. Wozu ist denn die Shebang da?
Freundliche Grüße
Vinzenz
Hallo Klara,
kenne mich mit Bash Programmierung nicht so besonders aus, aber:
test(){
max=10
version=getVersion
version=$[$version+1];
while [ $version -le $max ] ; do
echo $version <-----|
version=$[$version+1]; |
done |
} |
|
Kann es sein, dass hier ein ; fehlt? -------------|
Liebe Grüße mbr
Hi mbr,
kenne mich mit Bash Programmierung nicht so besonders aus, aber:
test(){
max=10
version=getVersion
version=$[$version+1];
while [ $version -le $max ] ; do
echo $version <-----|
version=$[$version+1]; |
done |
} |
|
Kann es sein, dass hier ein ; fehlt? -------------|
ein Semikolon muss man nur setzen, wenn mehrere Befehle in einer Zeile stehen
Klara