我想在bash
具有以下样式的脚本中执行命令:
rdiff-backup --verbosity 5 -somearguments -somemorearguments \
--remote-schema 'ssh -i $keyfile -C %s' \
sourcedir backup::/targetdir
问题随着--remote-schema
论证而出现。我必须做ssh 密钥变量,在本例中为$keyfile
.
我在 中构造了生成的命令$rdiffcmd
。我没有问题构建一个命令,其中一切看起来都应该工作: Anecho $rdiffcmd
显示了周围必要的引号--remote-schema
。但必须有一个无形的扩展,因为我总是收到rdiff-backup
(在本地方面)不理解的消息-i
。所以它没有使用引号。
我需要做什么才能将远程模式分组在一起并使其看起来像一个参数?
echo $rdiffcmd
很奇怪:我可以在终端中粘贴和复制输出并且它可以工作。但正如$rdiffcmd
我的脚本中所示,它不存在上述问题。
答案1
如果$keyfile
包含空格等:
rdiff-backup --verbosity 5 -somearguments -somemorearguments \
--remote-schema 'ssh -i "'"$keyfile"'" -C %s' \
sourcedir backup::/targetdir