• Wieder einmal haben uns unsere Apfeltalker tolle Fotos zur Abstimmung eingesandt. Welches ist Euer Favorit? Stimmt mit ab! Hier geht es zur Abstimmung --> Klick
  • Es ist bereits Apfeltalk-Tradition und wir möchten sie auch in diesem Jahr fortsetzen: Unser Apfeltalk-Weihnachtslogo-Wettbewerb hat begonnen! Gestaltet für uns das Weihnachtsbanner, das im Monat Dezember bis zum Weihnachtsfest unsere Webseite schmücken soll. Lasst Eurer Kreativität freien Lauf! Hier geht es zum Wettbewerb --> Klick

Variable auslesen und in Datei speichern klappt im Terminal aber nicht per Script?

Bozol

Angelner Borsdorfer
Registriert
05.01.04
Beiträge
620
Hallo,

Code:
width=$(mediainfo "--Inform=Video;%Width%" //Volumes/Work/Scratch/Neuer\ Ordner/Die\ Abenteuer\ von\ Shark\ Boy\ und\ Lava\ Girl\ \(2005\).m4v); echo $width > /Volumes/Work/fred/Desktop/FilmeWidth.txt
erzeugt beim Aufruf im Terminal auf dem Desktop die Datei "FilmeWidth.txt" mit dem Wert (in diesem Fall 720) von $width.

Beim Versuch diesen Aufruf mit einem Vergleich des Wertes von $width in ein Script einzubauen passiert nichts. :-(
Code:
#!/bin/sh
width=$(mediainfo "--Inform=Video;%Width%" //Volumes/Work/Scratch/Neuer\ Ordner/Die\ Abenteuer\ von\ Shark\ Boy\ und\ Lava\ Girl\ \(2005\).m4v)
 
if 
$width = "720"
then 
echo $width > /Volumes/Work/fred/Desktop/FilmeWidth.txt
else 
fi
was mache ich (Terminal-Noob) falsch? :-!

Danke,

Fred
 
Was bedeutet, es passiert "nichts"? Keine Ausgabe oder Fehler?
Wenn du um deine if-Abfrage eine Klammer packst, läuft bei mir der Schnipsel zumindest ohne Error durch.
Code:
if [ $width == 720 ]
then 
echo $width 
fi

Falls garkeine Ausgabe erscheint, hast du mit echo mal den Wert vor dem Vergleich ausgegeben, um zu sehen, ob das zu dem Zeitpunkt noch stimmt?
 
if
$width = "720"
then ...
Du rufst ein Programm auf, dessen Name der Inhalt von $width ist. Diesem versuchst du als Argument den Rest der Zeile unterzujubeln.
Logischerweise gibt das zu 99,999999% einen Fehler weil ein solches Programm nicht gefunden wird, und die if-Schleife reagiert anhand dieses Rückgabewertes korrekt - nämlich gar nicht, wie bei jedem anderen "false" auch.
 
@cham
Danke, es klappt.
@Rastafari
darum schrieb ich auch "Terminal-Noob" ;-) Aber wieder was gelernt...