2012-04-15 21 views
0

Ich bin neu im Bash Scripting und brauche Hilfe bei einem seltsamen Problem.Verzeichnis und String i bash script

Hier ist meine Codezeilen:

#!/bin/ash -x 
echo Variabel \$1='\t'$1 
TARGET_DIR=/volume1/video/Transcoded/ 
echo "Variabel\$TARGET_DIR=$TARGET_DIR" 
fbname=$(basename "$1") 
echo Variabel \$fbname=$fbname 
out="${fbname}""${TARGET_DIR}" 
echo $out 
read -p "Press [Enter] key to start next Transcode..." 

Diese Ausgänge:

Variabel $1=\t/volume1/video/Movies/Thor (2011)/Thor (2011).mkv 
Variabel$TARGET_DIR=/volume1/video/Transcoded/ 
Variabel $fbname=Thor (2011).mkv 
/volume1/video/Transcoded/ 
Press [Enter] key to start next Transcode... 

in der das letzte Echo $ aus shoulde Pfad und Dateiname sein kombiniert .. aber es ist gebrochen. was könnte falsch sein?

Vielen Dank für jede anwer :)

+1

'ash' ist nicht' bash', nicht, dass, die als relevant erscheint, was Sie bisher verwendet haben. – geekosaur

+0

Sie sind richtig, es ist auf einer Synology, die Gasthaus hat Asche ... – MadMonkeyMan

+0

hat jemand eine Idee? – MadMonkeyMan

Antwort

1

Es sieht für mich wie entweder $ 1 oder einige der Zeilen des Skripts Ende mit einem Wagenrücklauf (manchmal geschrieben \ r) - Dieses Zeichen ist in der Regel unsichtbar, kann aber merkwürdiges Verhalten und Ausgabe verursachen. Wenn wir zum Beispiel mit TARGET_DIR = "/ volume1/video/Transcoded /" und fbname = $ 'Thor (2011) .mkv \ r' beginnen (Anmerkung: $ '...' ist Bash Notation für eine Zeichenkette mit Escape-Sequenzen wie \ r interpretiert), wickeln Sie dann mit out = $ 'Thor (2011) .mkv \ r/volume1/Video/Transkodierte /' auf, und wenn Sie echo $out, druckt es:

Thor (2011).mkv 
/volume1/video/Transcoded/ 

. .. mit der zweiten "Linie" über die erste gedruckt, so dass Sie nie den ersten Teil sehen.

Zeilenrücklaufrückläufe sind normalerweise ein Ergebnis der Verwendung von DOS/Windows Texteditoren - verwenden Sie sie nicht für Unix-Textdateien (inkl. Skripte). Um sie zu entfernen, lesen Sie die vorherigen Fragen here und here.

BTW, ich zweite @ Shellter Verwirrung darüber, warum der Dateiname vor dem Pfad ...

+0

du bist richtig .. Ich habe Nano stattdessen und alles ist in Ordnung: Danke – MadMonkeyMan

1

try this:

out="${fbname}${TARGET_DIR}" 
echo $out 
+0

Hallo danke für deine Antwort .. Die Ausgabe war die gleiche ... – MadMonkeyMan