-d
не принимает регулярные выражения, он принимает имена файлов. Если вы просто хотите проверить простой префикс, достаточно подстановочного знака:
exists=0
shopt -s nullglob
for file in "$themeDirectory"/word* "$iconDirectory"/* ; do
if [[ -d $file ]] ; then
exists=1
break
fi
done
if ((exists)) ; then
echo Directory exists.
else
echo "Directories don't exist."
fi
nullglob
заставляет подстановочные знаки расширяться до пустых списков, если совпадений нет. В более крупном скрипте измените его значение в подоболочке или верните старое значение, если оно вам не понадобится.
@Джоб прав. Однако эта проблема может стать более серьезной, если изображение экрана приветствия является частью /etc/bash.bashrc
Вы должны убедиться, что удалили такое приветственное графическое содержимое из обоих:
В системах Debian и Ubuntu, в не -интерактивной оболочке, /etc/bash.bashrc сначала вызывается до ~/.bashrc
Проблема для меня заключалась в путанице <source>
и<destination>
Когда я перевернул их, все сработало, как и ожидалось (:фейспалм:)