Atribuição automática de variável

Atribuição automática de variável

Ao usar, dspmq | awk -F '[()]' '{print $2}'obterei saída em várias linhas. Então, quero considerar a saída da primeira linha como vairable1, a saída da segunda linha como variable2e assim por diante...
Como eu poderia fazer isso?

Responder1

Supondo que você se refira awka variáveis, faria mais sentido usar um array. Como:

dspmq | awk -F '[()]' '
  {variable[NR] = $2}
  END {
    print "first line: "variable[1]", third line: "variable[3]
  }'

Se você dizconchavariável, você poderia fazer:

eval "$(dspmq | awk -F '[()]' -v q="'" '
  function shquote(s) {
    gsub(q, q "\\" q q, s)
    return q s q
  }

  {print "variable"NR"="shquote($2)}'
)"

Se estiver usando o bashshell, você pode usar um array que pode ser preenchido:

readarray -t variable < <(dspmq | awk -F '[()]' '{print $2}')

Cuidado, pois os índices da matriz bash(como em kshcujo design ele foi copiado) começam em 0 em vez de 1 (primeira linha em ${variable[0]}).

Com zsh:

variable=("${(f@)$(dspmq | awk -F '[()]' '{print $2}')}")

(primeira linha em $variable[1])

informação relacionada