试图让脚本正确使用variables。 (下面的例子在命令行中,但是在#!/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
现在它正常工作。 好的。 现在让我们在$FLAGSvariables中添加更多的标志。 (我只用“-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的一个选项。
基本命令(手动input而不使用$FLAGSvariables)正常工作。
有任何想法吗?
有任何想法吗? 我已经读过了我能find的所有bash脚本文档,而且我无法弄清楚为什么rsync会在某些时候忽略双引号,并将-2"作为单个标记。
把它们扔进一个数组中:
FLAGS=( '-rptvlCR' '--rsh="ssh -2"' ) rsync "${FLAGS[@]}"
有关更多详细信息,请参阅此Bash FAQ