Утилита cat
concatenates all its inputs into one data stream.
Давая ей два файла, она производит вывод, состоящий из полного содержимого первого файла, за которым следует полное содержимое второго файла, в таком порядке.
В вашем случае:
$ cat file1 file2 >file-1-and-2
Если это сработает:
rsync "${rsarg[@]}" --filter='merge /home/roger/home.rsync-filter' ...
Тогда я полагаю, что вы не хотите заключать в одинарные кавычки rsync
. Здесь оболочка съедает их до того, как rsync
их увидит. В других ваших примерах кавычки заключены в кавычки, поэтому внутренние остаются и передаются для просмотра rsync
.
Так что пропускайте одинарные кавычки при построении массива:
rsarg+=("--filter=merge $srcff")
Обратите внимание, что с точки зрения оболочки в знаке равенства нет ничего особенного, и нет необходимости обрабатывать часть, которая идет после, иначе, чем часть перед . - foo = bar
то же самое, что - foo = "bar"
или "- foo = bar"
, или даже - fo "o = ba" r
.