2012-04-24 2 views
1

Я следующий кодПреобразовать строку в переменную в UNIX

let a=1 
let b=a 

echo $b 

Когда я эхо б, я хочу, чтобы передать его это значение (которое является «а»), а также отображать значение а (который равен «1»)

Можно ли это достичь?

+0

возможный дубликат [Косвенное присваивания значения переменной в Баш] (http://stackoverflow.com/questions/ 9938649/косвенное-переменное-назначение-в-bash) – l0b0

ответ

2

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

$ let a=1 
$ b=a 
$ echo $b 
a 
$ eval "echo \$$b" 
1 

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

1

Я думаю, что вы хотите let b=$a

+0

Спасибо за ваш ответ Sharet. В моем случае это не сценарий. У меня просто строка, которая может быть «a1», «a2» или «a3». Я получаю эту конкретную строку с сервера sql. У меня есть предопределенные переменные a1, a2 и a3. Мне просто нужно получить доступ к соответствующей переменной для строки. – Muthukumar

0

Если оболочка баш, то, что вы написали на самом деле устанавливает b на «1» (а не «а»), потому что $ не является обязательным в арифметических выражениях (которые вы вынуждаете с использованием let).

Без использования let, это синтаксис вы ищете (при условии, Баш): a=1; b=a; echo $b ${!b}, который выводит a 1

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