Я следующий кодПреобразовать строку в переменную в UNIX
let a=1
let b=a
echo $b
Когда я эхо б, я хочу, чтобы передать его это значение (которое является «а»), а также отображать значение а (который равен «1»)
Можно ли это достичь?
Я следующий кодПреобразовать строку в переменную в UNIX
let a=1
let b=a
echo $b
Когда я эхо б, я хочу, чтобы передать его это значение (которое является «а»), а также отображать значение а (который равен «1»)
Можно ли это достичь?
Во-первых, я бы сказал, что вы действительно не хотите, чтобы это сделать. Но вместо того, чтобы убедить вас, вот как это сделать:
$ let a=1
$ b=a
$ echo $b
a
$ eval "echo \$$b"
1
обратите внимание, что вы не можете использовать «пусть» для второго присваивания, так как вы хотите получить доступ в правой стороне в виде строки позже.
Я думаю, что вы хотите let b=$a
Спасибо за ваш ответ Sharet. В моем случае это не сценарий. У меня просто строка, которая может быть «a1», «a2» или «a3». Я получаю эту конкретную строку с сервера sql. У меня есть предопределенные переменные a1, a2 и a3. Мне просто нужно получить доступ к соответствующей переменной для строки. – Muthukumar
Если оболочка баш, то, что вы написали на самом деле устанавливает b
на «1» (а не «а»), потому что $
не является обязательным в арифметических выражениях (которые вы вынуждаете с использованием let
).
Без использования let
, это синтаксис вы ищете (при условии, Баш): a=1; b=a; echo $b ${!b}
, который выводит a 1
возможный дубликат [Косвенное присваивания значения переменной в Баш] (http://stackoverflow.com/questions/ 9938649/косвенное-переменное-назначение-в-bash) – l0b0