在我的bash脚本中,我需要在几个地方运行命令
rsync [stuff] --exclude={"/mnt/*","/proc/*"} [source] [destination]
为了避免输入整个列表,我想将选项--exclude={"/mnt/*","/proc/*"}
打包到一个名为EXCLUDES
的变量中,以便我可以输入我的脚本:
rsync [stuff] "$EXCLUDES" [source] [destination]
实现这一目标的正确方法是什么?
答案 0 :(得分:2)
使用数组:
EXCLUDES=(
--exclude="/mnt/*"
--exclude="/proc/*"
)
rsync [stuff] "${EXCLUDES[@]}" [source] [destination]
或带有--exclude-from
选项的here-doc:
rsync [stuff] --exclude-from - [source] [destination] <<EOF
/mnt/proc/*
/proc/*
EOF
我建议不要在脚本中使用大括号扩展。您的文本编辑器应该可以轻松快速复制重复的字符串,并且生成的脚本将更具可读性。 Brace扩展旨在用于交互式使用。