3
为什么带引号的变量中的选项会失败,但不带引号的情况下会起作用?
我了解到我应该在bash中引用变量,例如“ $ foo”而不是$ foo。但是,在编写脚本时,我发现了一种情况,它不带引号但不带引号就可以工作: wget_options='--mirror --no-host-directories' local_root="$1" # ./testdir recieved from command line remote_root="$2" # ftp://XXX recieved from command line relative_path="$3" # /XXX received from command line 这个作品: wget $wget_options --directory_prefix="$local_root" "$remote_root$relative_path" 这个不会(注意$ wget_options周围的双引号): wget "$wget_options" --directory_prefix="$local_root" "$remote_root$relative_path" 这是什么原因呢? 第一行是好的版本;还是我应该怀疑某个地方存在隐藏的错误导致此行为? 通常,在哪里可以找到好的文档来了解bash及其引用的工作原理?在编写此脚本期间,我觉得我开始在反复试验的基础上工作,而不是理解规则。