0

如何在 smbclient“put”命令中使用单引号?

例如:

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

“Guns N' Roses”中的 ' 会产生错误,但我不能使用“Guns N\' Roses”,因为会改变路径。

4

1 回答 1

0

您的 shell 不允许在单引号字符串中使用转义的单引号。阅读标题为“QUOTING”的部分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")"
于 2017-01-27T11:16:57.703 回答