История изменений
Исправление
Spirit_of_Stallman,
(текущая версия)
:
Ну, Kindly_Cat, это уже по сути сделал, но немного сумбурно.
Проведу пошагово:
# объявим x
x=sometext
# дальше мы объявляем "z"
z='$'$x
# присваиваем к ней знак "$" и переменную "$x"
# т.е. интерпретатор это будет видеть как "z='$sometext'"
# проверяем на деле и видим именно это
echo $z
выхлоп> $sometext
# теперь если сделать это же присвоение через eval
eval z='$'$x
# то всё что будет дальше интерпретатор увидит уже с знанием того, что необходимо "выполнить" всё что за эвалом
# и на деле он сначала преобразует до "z='$sometext'", а потом обнаружив "$sometext" попытается и её преобразовать как переменную
# но поскольку у нас нет объявленного "sometext" - z будет пуста; проверим:
echo $z
выхлоп>
# теперь объявим "sometext" и повторим присвоение к z
sometext='foobar';
eval z='$'$x;
echo $z
выхлоп> foobar
Исправление
Spirit_of_Stallman,
:
Ну, Kindly_Cat, это уже по сути сделал, но немного сумбурно.
Проведу пошагово:
x=sometext
y=100
# дальше мы объявляем "z"
z='$'$x
# присваиваем к ней знак "$" и переменную "$x"
# т.е. интерпретатор это будет видеть как "z='$sometext'"
# проверяем на деле и видим именно это
echo $z
выхлоп> $sometext
# теперь если сделать это же присвоение через eval
eval z='$'$x
# то всё что будет дальше интерпретатор увидит уже с знанием того, что необходимо "выполнить" всё что за эвалом
# и на деле он сначала преобразует до "z='$sometext'", а потом обнаружив "$sometext" попытается и её преобразовать как переменную
# но поскольку у нас нет объявленного "sometext" - z будет пуста; проверим:
echo $z
выхлоп>
# теперь объявим "sometext" и повторим присвоение к z
sometext='foobar';
eval z='$'$x;
echo $z
выхлоп> foobar
Исправление
Spirit_of_Stallman,
:
Ну, Kindly_Cat, это уже по сути сделал, но немного сумбурно.
Проведу пошагово:
x=sometext
y=100
# дальше мы объявляем "z"
z='$'$x
# присваиваем к ней знак "$" и переменную "$x"
# т.е. интерпретатор это будет видеть как "z='$sometext'"
# проверяем на деле и видим именно это
echo $z
выхлоп> $sometext
# теперь если сделать это же присвоение через eval
eval z='$'$x
# то всё что будет дальше интерпретатор увидит уже с знанием того, что необходимо "выполнить" всё что за эвалом
# и на деле он сначала преобразует до "z='$sometext'", а потом обнаружив "$sometext" попытается и её преобразовать как переменную
# но поскольку у нас нет объявленного "sometext" - z будет пуста; проверим:
echo $z
выхлоп>
# теперь объявим "sometext" и повторим присвоение к z
sometext='foobar';
eval z='$'$x;
echo $z
выхлоп> foobar
Исходная версия
Spirit_of_Stallman,
:
Ну, Kindly_Cat, это уже по сути сделал, но немного сумбурно.
Проведу пошагово:
x=sometext
y=100
# дальше мы объявляем "z"
z='$'$x
# присваиваем к ней знак "$" и переменную "$x"
# т.е. интерпретатор это будет видеть как "z='$sometext'"
# проверяем на деле и видим именно это
echo $z
выхлоп> $sometext
# теперь если сделать это же присвоение через eval
eval z='$'$x
# то всё что будет дальше интерпретатор увидит уже с знанием того, что необходимо "выполнить" всё что за эвалом
# и на деле он сначала преобразует до "z='$sometext'", а потом обнаружив "$sometext" попытается и её преобразовать как переменную
# но поскольку у нас нет объявленного "sometext" - z будет пуста; проверим:
echo $z
выхлоп>
# теперь объявим "sometext" и повторим присвоение к z
sometext='foobar';
eval z='$'$x;
echo $z
выхлоп> foobar