2016-04-18 2 views
1

Как я могу сослаться косвенной переменным в оболочке KornКосвенного реферирования в Korn Shell

Пусть я вариабельный

FLAG_1=0 

и я хочу это переменное значение изменилось из массива, что я» ве установить

set -A Flags_array 
Flags_array[0]=? #how to achieve this here 

Например, если я попробовать

Flags_array[0]=$FLAG_1 # this won't work as this assign the value 

я пытался делать что-то вроде этого

Flags_array[0]=FLAG_1 
echo ${Flags_array[0]} 

Но это дает OUTPUT FLAG_1

Я попытался с помощью nameref, но это дает мне ошибку

$ nameref Flags_array[0]=FLAG_1 
ksh: nameref: not found 

Пожалуйста, скажи мне, что это правильный путь к достижению этой цели ? потому, что я хочу сделать, это позже , если я пишу Flags_array[0]=10value of FLAG_1 becomes 10

ответ

0

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

set -a Flags_array 

просто сделал это, как это в моей консоли и работал:

set -a array 
number=5 
array[0]= $number 
echo $array[0] --------> from which i got result : 5[0] 

также просто знать на будущее, вы не нужны фигурные скобки {}, это использовать, только если вы вызываете переменный в месте были фактические данные, можно были бы ожидать (извините за выражение), например, здесь вам нужно будет их:

were e.g. random=5 

sed "${random}s/^.*$/1/" test.txt 

Надеется, что это очищает вещи для вас. . :)

+0

столица A также работает. + без фигурной скобки результат, полученный вами, не является допустимым результатом результата: 5 [0] 'и здесь я не ищу результата, вопрос касается косвенных ссылок – user4890159

+1

человек, что вам сказать, на моей машине, которая подключена на частном сервере он работает с небольшим a, на капитал я получаю ошибку amd, и он отлично работает на результаты, вы уверены, что используете ksh ???? – hedgehog