2012-04-15 14 views
0

私はbashスクリプティングには新しく、奇妙な問題の助けが必要です。ディレクトリと文字列i 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..." 

この出力:

は、ここでは、コードの私のラインでパスとファイル名を組み合わせることがshoulde最後のエコー$のうちで

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

..しかし、それが壊れています。 何が間違っている可能性がありますか?任意のanwerため

感謝:)

+1

'ash'は、それはあなたがこれまで使用してきたものに関連すると思われること' bash'、ないではありません。 – geekosaur

+0

あなたはSynologyにありますが、それは人の灰をbuid持っています... – MadMonkeyMan

+0

誰かがideを持っていますか? – MadMonkeyMan

答えて

1

$ 1、スクリプトのラインのいくつかのどちらかが、キャリッジリターン(時には書か\ rを)で終わるようですが、私には見えます - この文字は一般的に見えませんが、奇妙な動作や出力を引き起こす可能性があります。たとえば、TARGET_DIR = "/ volume1/video/Transcoded /"とfbname = $ 'Thor(2011).mkv \ r'(注:$ '...'はエスケープシーケンスを含む文字列のbash表記です。 \ rを解釈)のように、あなたはアウト= $ 'トール(2011)mkvの\ R /音量の/ビデオ/トランスコード/' で羽目になるだろう、としたときecho $out、それは印刷します

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

を。 ..最初の部分の上に2番目の「行」が印刷されているので、最初の部分は決して実際には見えません。

通常、DOS/Windowsのテキストエディタを使用した結果、派生キャリッジリターンが発生します。これは、UNIXテキストファイル(スクリプトを含む)には使用しないでください。それらを削除するには、上記の質問herehereを参照してください。

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

+0

私はnanoを代わりに使用しました。すべては大丈夫です:ありがとう – MadMonkeyMan

1

これを試してみてください。

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

お返事ありがとうございます。 出力は同じです... – MadMonkeyMan

関連する問題