Unix shell задерживает расширение имени файла - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть (java) программный проект с исходным файлом в нескольких каталогах.

Если я делаю следующее в моем файле .zshrc:

J=dir1/*.java dir2/*.java dir3/*.java ...
export J

Тогда я получаю ошибки, которыесреда слишком велика

Обычно я использую дерево make-файлов, которое за один раз компилирует один каталог (пакет), но иногда изменения отношений слишком запутанны, поэтому я делаю:

javac $J

Чтобы перекомпилироватьцелая партия.

Вопрос: Могу ли я сделать что-нибудь, чтобы процитировать список, например

J="dir1/*.java dir2/*.java dir3/*.java ..."
export J

Так, чтобы среда была маленькой, но переменная расширяла список имен файлов при ее использовании.

Я знаю, что мог бы что-то вроде

javac `eval ls $J`

, но я надеялся, что вызов все еще может быть простым.

1 Ответ

0 голосов
/ 13 сентября 2018

Вы, вероятно, хотите

J=(dir1/*.java dir2/*.java dir3/*.java ...)

(не нужно export, так как .zshrc поставляется).С установленным J вы можете просто запустить

javac $J

или более явно (без или без фигурных скобок)

javac ${J[@]}

Необходимость кавычек зависит от того, какие опции оболочки вы включили, но они не нужны по умолчанию в zsh.

...