Ich habe einen Teil eines Skripts, der nicht wie erwartet funktioniert. Es soll eine Liste von durch neue Zeilen getrennten Episodenpfaden im Format "/ volume1 / Shared Files / Cartoon / Show Name / Show Name SXX / file.mkv" (Anführungszeichen in der Listendatei enthalten) erstellt werden. Führen Sie diese Dateien über mediainfo und aus Hängen Sie die UID an jede Zeile an.
Ich kann die UID mit dem Einzeiler erhalten
/volume1/@appstore/nzbdrone/bin/mediainfo "/volume1/Shared Files/Cartoon/Show Name/Show Name SXX/file.mkv" | grep Unique | awk '{print $4}'
Wenn Sie jedoch den folgenden Code ausführen:
while read line; do
echo $line
/volume1/@appstore/nzbdrone/bin/mediainfo $line | grep Unique | awk '{print $4}' > $WorkingDir/output2.txt
echo `/volume1/@appstore/nzbdrone/bin/mediainfo $line | grep Unique | awk '{print $4}'`
var1=`echo /volume1/@appstore/nzbdrone/bin/mediainfo $line | grep Unique | awk '{print $4}'`
echo $var1
done < $WorkingDir/output.txt
Ich erhalte folgende Ausgabe:
"/volume1/Shared Files/Cartoon/Show Name/Show Name SXX/file.mkv"
"/volume1/Shared Files/Cartoon/Show Name/Show Name SXX/file.mkv"
"/volume1/Shared Files/Cartoon/Show Name/Show Name SXX/file.mkv"
"/volume1/Shared Files/Cartoon/Show Name/Show Name SXX/file.mkv"
"/volume1/Shared Files/Cartoon/Show Name/Show Name SXX/file.mkv"
"/volume1/Shared Files/Cartoon/Show Name/Show Name SXX/file.mkv"
Ich weiß, dass die UIDs nicht an die von mir gewünschte Stelle angehängt werden. Dies ist nur ein Versuch, Fehler zu beheben. Ich würde erwarten, dass mindestens eine dieser beiden Leerzeilen zwischen jeder echo $ -Zeile die UID enthält. Ich weiß nicht, wo es schief geht: /
(Laufen unter Bash auf einer Synology DS412 +)
quelle
while line=
Linie; do echo $line /volume1/@appstore/nzbdrone/bin/mediainfo "$line" | grep Unique | awk '{print $4}' > $WorkingDir/output2.txt echo
/ volume1 / @ appstore / nzbdrone / bin / mediainfo "$ line" | grep Unique | awk '{print $ 4}' `var2 =echo /volume1/@appstore/nzbdrone/bin/mediainfo "$line" | grep Unique | awk '{print $4}'
echo $ line echo $ var2 done & lt; $ WorkingDir / output.txt` Aber ich verstehe jetzt/volume1/Tom/Scripts/BaconSonarr/xseednzb-0.1.2.sh: line 25: line: command not found
line
Befehl installiert: Bestätigen Sie durch Eingabetype line
oderwhich line
. In Ubuntu ist es Teil der util-linux Paket, standardmäßig installiert. Wenn Sie es nicht finden können, können Sie es verwendenhead -n1
stattdessen wird so die erste zeilewhile line=$(head -n1); do
(Ich habe die Notation $ () verwendet, um Verwechslungen mit dem Back-Zitat für eingebetteten Code zu vermeiden, aber Sie können Back-Zitate in Ihrem Skript verwenden.)head -n1
Zunächst aber verursachte es eine Endlosschleife von Leerzeilen. Als nächstes installierte ich util-linux via ipkg und stellte den Code wieder her, den Sie ursprünglich vorgeschlagen hatten. Es funktioniert wie erwartet! Vielen Dank :)