Os feeds de linha não são um problema ao preencher uma matriz. Para bash
, eles são apenas mais um separador de palavras nesse contexto.
Seu comando LA= ((uptime | grep -o '[0-9]\+\.[0-9]\+*'))
tem dois erros:
-
O espaço após o
=
. Esta é uma sintaxe válida, mas não faz o que você provavelmente espera.Em vez de atribuir o valor do restante da linha a
$LA
, ele define$LA
para a sequência vazia e, em seguida, executa o restante da linha.Esse é um recurso útil para temporariamente substituir o valor de uma variável ambiente exportada antes de executar um comando específico. Assim que o comando sai, o valor original da variável é restaurado. por exemplo,
$ VISUAL=/usr/bin/joe sensible-editor myfile.txt .... (exit joe) $ echo $VISUAL /usr/bin/vi
-
A falta de um
$
antes do segundo(
. Sem o$
, seu comando não é substituição de comando , é aritmética de shell com operandos e operadores falsos.
Tente isso:
$ LA=($(uptime | grep -Eo '[0-9]+\.[0-9]+'))
$ typeset -p LA
declare -a LA=([0]="0.97" [1]="1.23" [2]="1.39")