shokifrend77 schrieb:
ich habe es jetzt so gemacht:
function timer() { echo $1 ; sleep $1 ; if [ $2 = 0 ] ; then set $2=timer abgelaufen ; fi ; zenity --info --text="$2" };
Das ist bestimmt nicht der Code, den Du ausgeführt hast.
aber was dabei rauskommt:
pi@Raspi-3:~ $ timer 2s timer_abgelaufen
sleep: fehlender Operand
„sleep --help“ liefert weitere Informationen.
Bei mir passiert:
| $ function timer() { echo $1 ; sleep $1 ; if [ $2 = 0 ] ; then set $2=timer abgelaufen ; fi ; zenity --info --text="$2" };
> ^C
$ bash -n <<'CODE'
function timer() { echo $1 ; sleep $1 ; if [ $2 = 0 ] ; then set $2=timer abgelaufen ; fi ; zenity --info --text="$2" };
CODE
bash: line 2: syntax error: unexpected end of file
|
Das liegt daran, dass das Semikolon am Ende vor der schließenden geschweiften Klammer stehen muss.
Darüber hinaus verwendest Du set falsch. Zumindest hat es den Anschein. Auch die Logik mit dem Vergleich mit 0 passt nicht, denn dann führst Du ja immer set 0=timer abgelaufen aus, was vermutlich nicht das tut, was Du möchtest:
| $ echo "$#: $*"
0:
$ echo "$#: <$*>"
0: <>
$ set 0=timer abgelaufen
$ echo "$#: <$*>"
2: <0=timer abgelaufen>
$ echo "$1"
0=timer
$ echo "$2"
abgelaufen
|
Mit anderen Worten: es setzt die Argumente der aktuellen Shell.
Sag mal lieber, was Du vorhast.