2017-01-27 15 views
0

smbclient "put"コマンドで一重引用符を使用するにはどうすればよいですか?例えばsmbclient一重引用符でファイルをコピー

smbclient -c 'put "/mydir/video.avi" "\Music\Guns N' Roses\video.avi"' 

「「バラガンズ」の」エラーを発生させるが、パスを変更しますので、私は、「ガンズ\」バラ」を使用することはできません。

+0

この質問は、Sambaやlibsmbclientに関するものではなく、シェルで引用符を使用する方法です。どのシェルを使っていますか? – ghoti

答えて

0

シェルでは、一重引用符で囲まれた文字列の中でエスケープされた一重引用符を使用することはできません。 man bashの "QUOTING"セクションを読んでください(シェルがbashであると仮定します)。

​​

それとも、あなたが好む場合:

smbclient -c 'put "/mydir/video.avi" "\Music\Guns N'"'"' Roses\video.avi"' 

または交互に、あなたは変数で物事を置くことができますが、内部の単一引用符に外の単一引用符で囲まれた文字列をエスケープする必要が

あなたの環境でこれをテストしていないことは明らかですが、私にとっては以下のように思えます。

$ source="/mydir/video.avi" 
$ target="\Music\Guns N' Roses\video.avi" 
$ cmd='put "$s" "$s"' 
$ smbclient -c "$(printf "$cmd" "$source" "$target")" 
+0

すごい!ありがとう、すべて今働く。 – Vardar

関連する問題