Я столкнулся с довольно странным поведением 7z (или bash, я пока не знаю). С помощью следующего скрипта:
#!/bin/bash
find /home/user -type f -name "*.pdf" | cut -c 10- > /home/user/exclude_list2.lst;
lst1=" -x@/home/user/exclude_list2.lst -xr!'*.config/*' -xr!'*.cache/*' "
command=$(/usr/bin/7z a $lst1 -v2048M arch0.7z /home/user);
$command
также, две последние строки могут быть легко заменены одной строкой:
/usr/bin/7z a $lst1 -v2048M arch0.7z /home/user
Я также попробовал:
command="/usr/bin/7z a $lst1 -v2048M arch0.7z /home/dh ;"
Я получаю файл 'arch0.7z', но папки .config и .cache по-прежнему включены, пока:
#!/bin/bash
find /home/user -type f -name "*.pdf" | cut -c 10- > /home/user/exclude_list2.lst;
/usr/bin/7z a -x@/home/user/exclude_list2.lst -xr!'*.config/*' -xr!'*.cache/*' -v2048M arch0.7z /home/user ;"
генерирует файл с правильно исключенными папками.
Итак, мне интересно, чем отличается строка, развернутая от переменной:
/usr/bin/7z a $lst1 -v2048M arch0.7z /home/user
и тот, который я напечатал как:
/usr/bin/7z a -x@/home/user/exclude_list2.lst -xr!'*.config/*' -xr!'*.cache/*' -v2048M arch0.7z /home/user
Есть ли причина для таких значительных изменений в рабочем процессе 7z?