2013-12-08 3 views
1

Я хочу инициализировать массив в sh.инициализация массивов в sh

Баш, который был бы:

list=(`seq 1 4`) 

В ш я пытаюсь сделать это следующим образом:

for i in `seq 1 4`; do 
     list[$((i-1))]="$i" 
    done 

Я получаю сообщение об ошибке, хотя для каждой итерации, говоря:

list[0]=1: not found 

Что я делаю неправильно и как это исправить?

+0

Это более или менее дубликатом http://stackoverflow.com/questions/6499486/how- to-mark-a-array-in-posix-sh –

ответ

3

POSIX sh не поддерживает массивы. Для этого вам нужна более сложная оболочка, например. bash, zsh, или ksh.

+0

http://www.tutorialspoint.com/unix/unix-using-arrays.htm утверждает иначе. –

+1

Не совсем. Просто не упоминается, что поддерживаются только некоторые оболочки. –

+0

'sh on OSX', похоже, поддерживает массивы. – anubhava

1

Если вы действительно хотите использовать массивы, вы можете выманить их, написав собственную функцию массива. Я не буду поощрять это, давая вам полную функцию :-), но вот суть:

$ f0=yay 
$ t=0 
$ eval echo f$t 
f0 
$ eval echo \$f$t 
yay 
Смежные вопросы