2016-01-10 1 views
0

Ищите помощь здесь. Я вижу ниже вопросПеременная замещения Shell, ошибка в [output]

y=1 
j$y=`cat /home/devteam/auppu/new_ig_1|head -n $y` 
ksh: j1=5555555555555555: not found 

У меня нет проблемы, когда я кошка на файл, как показано ниже

cat /home/devteam/auppu/new_ig_1|head -n $y 
5555555555555555 
+0

Возможный дубликат [Непрямое присвоение переменной в bash] (http://stackoverflow.com/questions/9938649/indirect-variable-assignment-in-bash) –

+0

@BenjaminW. так как я могу получить o/p без ошибок? – ady6831983

+0

@ ady6831983 Вам нужно динамически называть свою переменную или она может быть только j1? – entpnerd

ответ

2

Самый простой способ сделать это с помощью индексированного массива, например:

y=1 
j[$y]=`cat /home/devteam/auppu/new_ig_1|head -n $y` 
echo ${j[$y]} 

Таким образом, вы можете хранить несколько инвокации команды cat в цикле в ассоциативном массиве, на который ссылается переменная j.

+0

у вас это получилось. Спасибо – ady6831983

+0

Это всего лишь индексированный массив, а не ассоциативный. Если вам нужен ассоциативный подход, вам следует объявить его первым. При этом индексированные массивы, по-видимому, являются лучшим решением здесь. –

+0

Вы правы. Я исправил свой пост. – Sam

2

Вы могли бы сделать что-то вроде

y=1 
x=j${y} 
x=`cat /home/devteam/auppu/new_ig_1|head -n $y` 
echo $x 

Вы должны были бы для создания промежуточной переменной (x в этом случае), а затем назначить ей результаты вашей команды cat

+1

Вторая строка на самом деле ничего не делает. –

+0

Согласен, этот ответ не так полезен, если ОП пытается сделать это в цикле. – Sam

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