У меня есть файл, который поставляется приложением, добавляя соответствующие каталоги в $ PATH и $ LD_LIBRARY_PATH.
Это хорошо, но это приводит к несколько чрезмерному загрязнению $ PATH и $ LD_LIBRARY_PATH, поскольку добавлено довольно много путей, около 2/3 которых не существует.
Я могу проверить наличие каталога, используя [ ! -d $VARIABLE_TO_ADD_TO_PATH ]
, но если я обнаружу, что каталог не существует, сбросить его будет сложнее.
Я могу написать (для каждой из, возможно, 10 переменных)
if [ ! -d $VAR ]
unset VAR
fi
но я бы предпочел иметь функцию.
Я старался:
_testPathAndUnset()
{
while [ $# -ge 1 ]
do
dirToTest=${1/startPattern/\$startPattern}
if [ ! -d $dirToTest ]
unset $1
fi
shift
done
}
Передача значений в виде, подобном _testPathAndUnset VAR1 VAR2 VAR3
(не $VAR1 $VAR2 $VAR3
), но теперь у меня есть строки, которые не раскрываются.
Использование eval
может решить эту проблему для меня, но другие вопросы, ответы, веб-сайты и т.д. Предполагают, что это вообще плохая идея.
Как я могу решить эту проблему лучше, чем 30 строк 10х3?
if [ ! -d $VAR ]
unset VAR
fi