尝试让脚本正确使用变量。(下面的示例是在命令行上,但我在脚本内部看到完全相同的行为#!/bin/bash
。
$ FLAGS='--rsh="ssh -2"'
$ rsync $FLAGS foo bar
rsync: -2": unknown option
rsync error: syntax or usage error (code 1) at main.c(1084)
因此我添加了引号。
$ rsync "$FLAGS" foo bar
现在它工作正常了。好的。现在让我们向变量添加更多标志$FLAGS
。(我尝试只使用“-r”和“-p”,结果相同,所以我认为这与我传递的特定单连字符标志无关。)
$ FLAGS='-rptvlCR --rsh="ssh -2"'
$ rsync $FLAGS foo bar
rsync: -2": unknown option
rsync error: syntax or usage error (code 1) at main.c(1084)
$ rsync "$FLAGS" foo bar
rsync: -rptvlCR --rsh="ssh -2": unknown option
rsync error: syntax or usage error (code 1) at main.c(1084)
$
请注意,在第二种情况下,它将整个参数视为 rsync 的单个选项。
基本命令(手动输入,不使用$FLAGS
变量)可以正常工作。
有任何想法吗?
有什么想法吗?我已经阅读了所有我能找到的 bash 脚本文档,但我不明白为什么 rsync 有时会忽略双引号并将其视为-2"
单个标记。