ash scripting hilfe (gelöst)

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
starbuck
Beiträge: 45
Registriert: 08.11.2006 14:06:35

ash scripting hilfe (gelöst)

Beitrag von starbuck » 28.12.2009 09:43:53

Hallo, ich möchte ein kleines script machen was folgenden pseudo-code in einer openwrt ash-shell ausführt:

Code: Alles auswählen

read $number from /home/number.txt

if $number smaller than 99 and bigger than 10
  then $number = $number+1
  else $number = 11
fi
write $number to /home/number.txt
Es wäre schön wenn mir jemand sagen könnte wie die korrekte Syntax lautet. Im Netz finde ich nur tausend verschiedene bash-guides und die es gibt mehrere verschiedene Schreibweisen, habe es aber noch nicht zum funktionieren bekommen.

Danke
starbuck
Zuletzt geändert von starbuck am 28.12.2009 12:35:49, insgesamt 1-mal geändert.

chrisbra
Beiträge: 122
Registriert: 19.10.2005 09:36:09
Wohnort: Sachsen-Anhalt
Kontaktdaten:

Re: ash scripting hilfe

Beitrag von chrisbra » 28.12.2009 10:38:59

starbuck hat geschrieben:

Code: Alles auswählen

read $number from /home/number.txt

if $number smaller than 99 and bigger than 10
  then $number = $number+1
  else $number = 11
fi
write $number to /home/number.txt
Ich kenne jetzt die as nicht, aber folgenden Posix Code müßte sie unterstüzen:

Code: Alles auswählen

chrisbra t41:/tmp [1091]% dash
$ echo 1 > file
$ read number < file
$ if [ "$number" -lt 99 -a "$number" -gt 10 ]; then
> number=`expr $number + 1`
> else
> number=11
> fi
$ echo $number > file
$ cat file
11
$ read number < file
$ if [ "$number" -lt 99 -a "$number" -gt 10 ]; then
> number=`expr $number + 1`
> else
> number=11
> fi
$ echo $number > file
$ cat file
12
Zuletzt geändert von chrisbra am 28.12.2009 11:45:48, insgesamt 1-mal geändert.
Meine Whishlist
:wq!

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: ash scripting hilfe

Beitrag von Meillo » 28.12.2009 11:37:26

Einmal hast du Leerzeichen um das Gleichheitszeichen bei der Zuweisung, die müssen weg. (Ändere es bitte selbst.) Sonst sieht's ganz gut aus.

Manch ältere Systeme kennen bei test kein -a und -o. Das muss dann mit zwei test-Aufrufen und && bzw. || ersetzt werden.
Use ed once in a while!

chrisbra
Beiträge: 122
Registriert: 19.10.2005 09:36:09
Wohnort: Sachsen-Anhalt
Kontaktdaten:

Re: ash scripting hilfe

Beitrag von chrisbra » 28.12.2009 11:47:33

Meillo hat geschrieben: Manch ältere Systeme kennen bei test kein -a und -o. Das muss dann mit zwei test-Aufrufen und && bzw. || ersetzt werden.
Wenn sie Posix kompatibel ist, und das ist sie laut Wikipedia, dann kann sie -a

Und ich habe nicht ohne Grund mit dash getestet.
Meine Whishlist
:wq!

Benutzeravatar
starbuck
Beiträge: 45
Registriert: 08.11.2006 14:06:35

Re: ash scripting hilfe

Beitrag von starbuck » 28.12.2009 12:35:25

Vielen Dank chrisba! Funkt tadellos... Das Script sieht fertig so aus:

Code: Alles auswählen

#!/bin/sh

read number < number.txt
if [ "$number" -lt 99 -a "$number" -gt 10 ]; then
   number=`expr $number + 1`
   else
   number=11
fi

echo $number > number.txt

exit 0

Antworten