[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Fehler in einer bash-Befehlszeile



On Fri, 12 Aug 2005 11:34:06 +0200
Erich Ludwig <elu.repp@freenet.de> wrote:

> ./nvram-wakeup -C /etc/nvram-wakeup.conf --directisa  -s $(('date +%s'\ 
> +10 * 60 )) --nowrite
> 
> -bash: 'date +%s' + 10 * 60:
> syntax error: operand expected (error token is "'date +%s' + 10 * 60)

Mit $(( ... )) kann man in der bash mit ganzen Zahlen rechnen, Beispiel:

  echo $(( 3 + 5 * 2 ))

Mit $( ... ) oder ` ... ` (Backticks) erhält man die Ausgabe des
eingeschlossenen Befehls. ' ... ' (Hochkommata) werden zum quoten
benutzt, also um zu verhindern, dass Zeichen mit besonderer Bedeutung, wie
"*", "$" oder "`" aber auch normale Anführungszeichen, ausgewertet werden.
Beispiel:

  echo ' `date +%s` = "'`date +%s`'"'
  echo '$(date +%s) = "'$(date +%s)'"'

In deinem Script hast du also Hochkommata mit Backticks verwechselt. Um
solche Fehler zu vermeiden, sollte man statt den Backticks die $() Syntax
verwenden.

Weitere Infos findest du im "Bash programming intro HOWTO", an etlichen
Ecken im Internet oder umfassend in "man bash".

Abgesehen davon scheinst du mit obiger Kommandozeile den Rechner
anzuweisen, sich in Zehn Minuten wieder einzuschalten. Da kannst du die
Kiste auch gleich weiter laufen lassen. ;-)


Gruß,

Christian Bodenstedt



Reply to: