我如何在smbclient中使用单引号" put"命令?
例如:
smbclient -c 'put "/mydir/video.avi" "\Music\Guns N' Roses\video.avi"'
' in" Guns N'玫瑰"生成错误,但我不能使用" Guns N \'玫瑰",因为会改变路径。
答案 0 :(得分:0)
您的shell不允许在单引号字符串中使用转义单引号。阅读man bash
中标题为“QUOTING”的部分(假设你的shell是bash)。
你需要在单引号字符串中转义内部单引号 :
smbclient -c 'put "/mydir/video.avi" "\Music\Guns N'\'' Roses\video.avi"'
或者,如果您愿意:
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")"