Поскольку у вас есть имена пакетов, вы можете просто сохранить их в простой строковой переменной, если хотите использовать стандартную оболочку. Как минимум в соответствии с руководствами Debian , имена пакетов могут содержать только символы -+.:~a-z0-9A-Z
, ни один из которых не является символом подстановки или пробелом.
Так что все должно быть в порядке:
#!/bin/sh
packages="curl git htop..."
IFS=" " # make sure there's nothing weird here
apt --yes install $packages # no quotes!
Если вы параноик, добавьте set -f
в начало, чтобы отключить подстановку имени файла. Это оставило бы только пробелы как проблему, но я не думаю, что какая-либо разумная система допустила бы пробелы в именах пакетов.
Выяснилось, что в моем сценарии была глупая ошибка, не связанная с этим. Файлы все время были в актуальном состоянии, скрипт просто не копировал их туда, где я думал.
В какой-то момент при изменении скрипта я, должно быть, случайно удалил косую черту в конце исходного пути. Это означает, что скрипт изменил поведение с копирования в /totembackup/totemdoc
для копирования в /totembackup/totemdoc/Documents
. Я никогда не замечал этот новый каталог Documents
при просмотре /totembackup/totemdoc
, чтобы проверить, работают ли резервные копии.
Восстановление исходного пути к/home/stefan/Documents/
(обратите внимание, что косая черта в конце )вернула поведение сценария к тому, что я ожидал.