Значение, присвоенное в функциональной переменной, всегда пусто

Я обнаружил, что ответственным за это является gnome-settings-daemon.

/usr/libexec/gnome-settings-daemon
1
28.10.2015, 04:04
1 ответ

Вы ожидаете:

CONFIG_RESULT=$(configuer)

Присвоить значение $RECYCLEBIN, потому что вы...

RECYCLEBIN="$value"

... в функции configer(). Правда, функция does присваивает значение $RECYCLEBIN, но это значение сохраняется только на время работы функции $(subhell), в которой вы его установили. Она не применит никаких изменений в окружении родительской оболочки - именно там, где вы ее вызываете. Когда вы:

eval echo "Recyclebin: ${RECYCLEBIN}"

eval разбирает все аргументы в строку, разделенную пробелами, и пытается запустить результат в виде команды оболочки. Таким образом, "${RECYCLEBIN}" исчезает, потому что в текущем окружении оболочки в последний раз была установлена нулевая строка типа ':

RECYCLEBIN=

Таким образом, при выполнении оператора все, что он делает - это:

echo Recyclebin:

Что функционально ничем не отличается от ....

echo "Recyclebin: ${RECYCLEBIN}"

... в любом случае, потому что $RECYCLEBIN пуст.

2
27.01.2020, 23:38

Теги

Похожие вопросы