Bash 引用扩展

Bash 引用扩展

我想在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

相关内容