我正在尝试使用此bash脚本保存一些输入:
#!/usr/bin/env bash
n=$(($#-1))
files=${@:1:$n}
dest=${!#}
echo "$n files"
echo "${files[@]}"
echo "$dest"
rsync -av "${files[@]}" kyopti:$dest
注意"${files[@]}"
部分,我这样做是因为它是在Greg的bash教程中推荐的。这会产生错误:
rsync: link_stat "/tmp/scplot.pdf ssknplot.pdf" failed: No such file or directory (2)
但如果删除引号,一切正常。我很困惑,这不应该是最好的做法,添加引号?
答案 0 :(得分:4)
files
不是数组。它只是一个由空格分隔的位置参数列表组成的字符串。你想要
files=( "${@:1:$n}" )
然后,您在files
命令中引用rsync
将按预期工作。