如何在smbclient "put“命令中使用单引号?
例如:
smbclient -c 'put "/mydir/video.avi" "\Music\Guns N' Roses\video.avi"'在“枪N‘玫瑰”中会产生一个错误,但我不能使用“枪N’玫瑰”,因为它会改变路径。
发布于 2017-01-27 11:16:57
您的shell不允许在单引号中使用转义单引号。阅读man bash中题为“引用”的部分(假设您的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")"https://stackoverflow.com/questions/41892521
复制相似问题