【发布时间】:2018-05-23 13:48:11
【问题描述】:
在 bash 脚本中,我有一个使用 rsync 的命令:
#!/usr/bin/bash -e
...
parallel rsync --exclude '*to?be?deleted*' ...
--files-from some_file /auto $instance_ip:/somewhere_else/
根据 rsync 的文档,他们的 --exclude 字段具有不同风格的模式匹配。
当我在 bash 终端中运行它时,它运行良好。
但是,在 zsh 上运行它会给我一个错误,因为 zsh 试图扩展我试图传入的这个文字字符串:
zsh:1: no matches found: *to?be?deleted*
这应该不发生。为什么 zsh 甚至首先在我的 bash 脚本中扩展我的 glob?我的 zsh 上是否有一些设置可以设置以使两者的行为方式相同?我不想在 zsh 中开发并使用 bash 部署到环境中,并且必须以不同的方式行事。
我正在使用 oh-my-zsh 的插件:
plugins=(
git
colored-man-pages
zsh-autosuggestions
zsh-syntax-highlighting
)
具体来说,使用这组命令会失败:
#!/usr/bin/bash -e
find . -name '*filelist' | parallel -j10 rsync --exclude "*to?be?deleted*" testing somewhere_else:/some/where/else
但是单独使用 rsync 的命令,它不会中断。
【问题讨论】:
-
你是如何运行脚本的?
-
$ bash my_script.sh -
那就特别出人意料了。你的脚本中的
...是什么,没有它你会得到同样的东西吗? -
好吧,
...相当长,但它正在设置云实例并进行一些预处理。我正在尝试rsync处理这些文件。我尝试做一个简单的rsync并且成功了。我已经在我的问题中发送了一个 MVCE :) -
您在 bash 脚本中引用了该模式,但
parallel的所有额外参数都传递给 另一个 shell,减去了bash已经删除的引号。
标签: bash zsh gnu-parallel