smbclient копия файла с одинарной кавычкой
Как я могу использовать одинарные кавычки в smbclient "положить" команду?
Например:
smbclient -c 'put "/mydir/video.avi" "\Music\Guns N' Roses\video.avi"'
'In' Guns N' Roses"генерирует ошибку, но я не могу использовать"Guns N\' Roses", потому что изменит путь.
1 ответ
Ваша оболочка не позволяет использовать экранированные одинарные кавычки внутри строки в одинарных кавычках. Прочтите раздел "Цитирование" в man bash
(при условии, что ваша оболочка 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")"