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

Re: Shell Skript Problem beim Kommandoaufruf inkl. "("



"Jean Fiedler" <jeanfiedler@gmx.de> writes:

>if [ `(diff <(gzip -dc $LASTBACKUP | tar tvf -) <(gzip -dc
>$BDIR/CVS_Backup_$DATE.tar.gz | tar tvf -)) | wc -l` != 0 ] ; then
>
>
>beim ausführen mekert er aber und sagt
>
>syntax error at line 1: `(' unexpected
>
>Ich denke mal er stört sich an der Klammer.
>
>Wie muß ich das jetzt quoten? mit \ vor jeder klammer hab ichs schon
>versucht.

Vermutlich willst Du das Process Substitution des bash nutzen, richtig?

Dann ist an den runden Klammern nichts zu maskieren.

Die Fehlermeldung

>syntax error at line 1: `(' unexpected

ist aber recht spärlich.  Um da weiter zu kommen, könntest Du

* erstmal alle weiteren Fehler, die durch Variablenexpansion ohne »"«
  auftreten könnte, ausschließen, also: 

  $ if [ `(diff <(gzip -dc "$LASTBACKUP" | tar tvf -) <(gzip -dc \
    "$BDIR"/CVS_Backup_"$DATE".tar.gz | tar tvf -)) | wc -l` != 0 ] ; then

  (Beachte die eingefügten Anführungszeichen.),

* zuvor das Kommando

  $ set -x

  einfügen, damit das Shell ausspuckt, was es gerade macht,

* dein kompliziertes Kommando zur Fehlersuche zerlegen, etwa

  $ diff <(gzip -dc "$LASTBACKUP" | tar tvf -) <(gzip -dc \
    "$BDIR"/CVS_Backup_"$DATE".tar.gz | tar tvf -) > /dev/null

  oder gar
  
  $ cat -- <(date)
  
  ausprobieren, um zu sehen, ob das Shell das versteht.

* im Manual-Page deines Shells überprüfen, ob es die »<(...)«- und
  »>(...)«-Geschichten überhaupt kennt.
-- 
Wenn Sie mir E-Mail schreiben, stellen |  When writing me e-mail, please
Sie bitte vor meine E-Mail-Adresse     |  precede my e-mail address with
meinen Vor- und Nachnamen, etwa so:    |  my full name, like
Helmut Waitzmann <xxx@example.net>, (Helmut Waitzmann) xxx@example.net



Reply to: