2015-05-21 2 views
-2

Я хочу написать простой скрипт, где я назначаю значение переменной в качестве другой переменной. И затем повторите это. Что-то наподобие этогоКак эхо переменная от переменной

abc=hi 
hi=123 
echo $abc 
echo $hi 
echo $(echo $abc) 

Для третьего эха я хочу, чтобы желаемый результат был «123», но это не происходит.

+0

@fedorqui Я думаю, что мы оба можем упустить из виду тот факт, что OP не обязательно использует bash. –

+0

@TomFenech uhms, теперь я вижу комментарий в вашем ответе. Ну, тогда это определенно дубликат (это очень часто задается), только для того, чтобы он нуждался в 'eval'. Я могу снова открыть, но тогда я не смогу провести закрытый голос. – fedorqui

+0

Пожалуйста, заново открыть и предоставить решение. Косвенное расширение не работает. – Shitu

ответ

1

В Баше, вы можете использовать косвенное расширение:

$ abc=hi 
$ hi=123 
$ echo ${!abc} 
123 

В других оболочках, альтернативой является использование eval:

$ eval echo \$$abc 
123 

Конечно, это идет со всеми рисками, связанных с использованием eval, например:

$ abc="hi; echo oops"  
$ eval echo \$$abc 
123 
oops 

Blindly eval как следует избегать, когда это возможно.

Смежные вопросы