find_arg
передается как единственный аргумент (из-за двойных кавычек), что означает, что find
пытается найти все файлы в каталоге с именем Dir! -name '* .txt'! -name '* .cpp' -print
(Да, это допустимое имя каталога). Попробуйте printf '% q \ n' "$ find_arg"
, чтобы увидеть фактические аргументы, переданные в find
. Кроме того, если ваша оболочка поддерживает массивы, вам, вероятно, следует использовать их для хранения аргументов . И Use More Quotes ™ ! И не используйте здесь eval
- find
просто напечатает имена файлов.
Поскольку /etc/exports
не поддерживает подстановочные знаки, вы можете просто запустить скрипт для автоматического создания /etc/exports
со всеми необходимыми строками. Сценарий может выглядеть так, как показано ниже, и вы даже можете запускать его ежедневно через cronjob, чтобы обновлять экспорт для добавленных или удаленных пользователей.
grep -v "^/home/.*/Documents\b" /etc/exports > /etc/exports.new
find /home/ -mindepth 2 -maxdepth 2 -type d -name Documents \
| sed 's/$/ *(rw,sysc,no_root_squash)/' >> /etc/exports.new
mv /etc/exports.new /etc/exports
exportfs -ra