[fli4l] Bash /Dash

Christoph Schulz fli4l at kristov.de
So Nov 1 10:22:20 CET 2015


Hallo!

Mike B.  schrieb:

>  . exit 1

  exit 1 

(Was soll der Punkt dort? Das funktioniert auch bei mir in der bash nicht!)

> set -- ${BACKUPDIR}/backup-???.tgz
> lastname=${!#}

Indirektion (${!...}) gibt es in der ash nicht. Um den letzten Eintrag zu 
finden, kannst du eval verwenden:

  eval lastname=\$\{$#\}

> backupnr=$[10#${backupnr}]

Basisumrechnungen gibt es in der ash nicht. Es reicht wohl völlig, führende 
Nullen abzuschneiden:

  backupnr=$(echo "$backupnr" | sed 's/^0*//;s/^$/0/')

> if [ "$[backupnr++]" -ge 30 ]; then

So etwas wie Postinkrementoperatoren gibt es in der ash nicht. Du musst das 
entsprechend umformulieren:

  currentnr=$backupnr
  backupnr=$((backupnr+1))
  if [ $currentnr -ge 30 ]; then

>  . exit 1

Siehe oben.

> backupnr=${backupnr: -3}

Die letzten drei Zeichen zu liefern geht so mit der ash nicht. Alternative:

  len=${#backupnr}
  backupnr=${backupnr:$((len-3)):$len}


Ach so, ich übernehme natürlich keine Garantie, dass ich nicht irgendetwas 
übersehen habe...


Viele Grüße und viel Erfolg,
-- 
Christoph Schulz
[fli4l-Team]



Mehr Informationen über die Mailingliste Fli4L