Проблема в том, что цикл while выполняется в отдельном экземпляре оболочки, а локальная переменная в нем ($CP
) недоступна во внешней оболочке.
Что-то вроде
while read line; do
CP="$CP:$line"
done < /tmp/classpath
должно работать. Но обратите внимание, что $CP
заканчивается двоеточием в качестве первого символа, поэтому требуется некоторая постобработка.
Более того, вы должны использовать mktemp
, иначе вы можете быть обмануты перезаписью файлов, если кто-то поместит символическую ссылку на /tmp/classpath
.