LINUX.ORG.RU

История изменений

Исправление 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