0

私はbashスクリプトを初めて使用するので、奇妙な問題について助けが必要です。

これが私のコード行です:

#!/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..."  

これは以下を出力します:

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... 

最後のエコーでは、$ outはパスとファイル名を組み合わせたものである必要がありますが、壊れています。何が間違っている可能性がありますか?

回答ありがとうございます:)

4

2 に答える 2

1

これを試して:

out="${fbname}${TARGET_DIR}"  
echo  $out  
于 2012-04-15T08:55:29.133 に答える
1

$ 1か、スクリプトの一部の行がキャリッジリターンで終わっているように見えます(\ rと書かれることもあります)。この文字は通常は表示されませんが、奇妙な動作や出力を引き起こす可能性があります。たとえば、TARGET_DIR = "/ volume1 / video / Transcoded /"で始まり、fbname = $'Thor(2011).mkv \ r'(注:$'...'は、エスケープシーケンスを含む文字列のbash表記です。 \ rの解釈のように)、out = $'Thor(2011).mkv \ r / volume1 / video / Transcoded /'になり、次echo $outのように出力されます。

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

...最初の部分の上に2番目の「線」が印刷されているため、最初の部分が実際に表示されることはありません。

迷走復帰は通常、DOS / Windowsテキストエディタを使用した結果です。UNIXテキストファイル(スクリプトを含む)には使用しないでください。それらを削除するには、ここここで前の質問を参照してください。

ところで、ファイル名がパスの前にある理由について、@shellterの混乱を2番目にしています...

于 2012-04-15T21:52:21.360 に答える