URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 8880
[ Назад ]

Исходное сообщение
"раскрытие переменны в шелл"

Отправлено labrador , 06-Окт-10 16:54 
Доброго времени суток!

Имеется сценарий вида:
#!/bin/sh -
STR="Hello, $i"
value='test'
i=$value
echo "Now \$i is $i"
echo $STR

выполнение даёт результат:
Now $i is test
Hello,

желаемый результат
Now $i is test
Hello, test

т.е. задача - подставить текущее значение $i в $STR, раскрыть её там, и только после этого передать всё вместе аргументом echo(), как было бы, если привести сценарий к виду
#!/bin/sh -
value='test'
i=$value
echo "Now \$i is $i"
STR="Hello, $i"
echo $STR

выполнение которого даёт
Now $i is test
Hello, test

Эни хэлп?


Содержание

Сообщения в этом обсуждении
"раскрытие переменны в шелл"
Отправлено phpcoder , 06-Окт-10 17:01 
eval должен помочь тут

"раскрытие переменны в шелл"
Отправлено labrador , 06-Окт-10 17:24 
> eval должен помочь тут

На eval() я первым делом подумал, перепробовал массу разных вариантов и комбинаций, но пока не помог.
Нельзя ли по-подробней на этом примере, т.к. у меня есть подозрение что я просто неправильно понимаю как работает этот оператор.


"раскрытие переменны в шелл"
Отправлено phpcoder , 06-Окт-10 17:50 
>> eval должен помочь тут

[c0der@rock ~]$ sh o.sh                                                   20:52
Now $i is test
Hello, test
[c0der@rock ~]$ cat o.sh                                                  20:52
#!/bin/sh -
STR='echo "Hello, $i"'
value='test'
i=$value
echo "Now \$i is $i"
eval $STR



"раскрытие переменны в шелл"
Отправлено labrador , 06-Окт-10 18:05 
спасибо, теперь разобрался!