por que o seguinte script está falhando?

0
#!/bin/sh
declare -a LIST= ('a' 'b' 'c' )

está falhando no Ubuntu no qual /bin/sh é um link para /bin/dash

Como posso declarar uma lista que será suportável em todos os tipos de shell?

    
por Niraj 18.09.2014 / 13:05

1 resposta

0

A resposta curta é que você não pode. É por isso que a primeira linha (que deve ter um # inicial, que teria aparecido se você tivesse escrito o texto como código) permite especificar o shell para o qual ele é relevante. Em particular, csh é muito diferente de Bourne (sh), Korn (ksh) e Bourne-again (bash).

No entanto, sh / ksh / bash tem sintaxe semelhante para recursos comuns, portanto, sh scripts devem ser executados em ksh / bash. dash parece ser equivalente a Bourne, mas as matrizes são uma extensão bash / ksh não presente em sh / dash.

Altere sua primeira linha para #!/bin/bash e você não terá problemas.

Há muitas informações de compatibilidade no link , com uma lista detalhada das diferenças.

    
por 18.09.2014 / 13:50