Bash 在命令行中为批处理脚本添加参数

Bash 在命令行中为批处理脚本添加参数,bash,shell,rsync,Bash,Shell,Rsync,我正在尝试调用参数,以便使用rsync命令运行脚本。我尝试过各种形式,这是最“简单”的,但是我仍然会得到一个错误 (bash.sh) 错误信息 命令行 使用带有空格的变量,而不在每一侧使用语音标记或引号,可能会导致错误发生,尤其是在使用变量且值中有空格时 您可以尝试的另一种方法是使用数组,options变量是数组所在的位置,然后在下面的rsync命令中调用它 directory="/etc" backupDirectory="/backup" increm

我正在尝试调用参数,以便使用rsync命令运行脚本。我尝试过各种形式,这是最“简单”的,但是我仍然会得到一个错误

(bash.sh) 错误信息 命令行
使用带有空格的变量,而不在每一侧使用语音标记或引号,可能会导致错误发生,尤其是在使用变量且值中有空格时

您可以尝试的另一种方法是使用数组,options变量是数组所在的位置,然后在下面的rsync命令中调用它

directory="/etc"
backupDirectory="/backup"
incrementalBackup="/incremental"
options=(-a -e 'ssh -p 10022' -b --backup-dir="$incrementalBackup" --delete)
# rsync
rsync "${options[@]}" user@server:"$directory" "$backupDirectory"

variable=value
中不能有空格。通过@meuh添加到注释中,建议您保留引用的值,尤其是当它们是字符串时。将脚本粘贴到以进行验证。@Jetchisel这是检查我的shell脚本的一个非常整洁的地方,确实非常有用。谢谢:)这并不能解释问题是什么以及如何解决。
test.sh: line 2: root_dir: command not found
test.sh: line 3: target_dir: command not found
sh bash.sh ./path_root_dir ./path_target_dir
directory="/etc"
backupDirectory="/backup"
incrementalBackup="/incremental"
options=(-a -e 'ssh -p 10022' -b --backup-dir="$incrementalBackup" --delete)
# rsync
rsync "${options[@]}" user@server:"$directory" "$backupDirectory"