Автоматическое назначение переменной

Автоматическое назначение переменной

Используя dspmq | awk -F '[()]' '{print $2}'я получу вывод в несколько строк. Поэтому я хочу рассматривать вывод первой строки как vairable1, вывод второй строки как variable2и так далее...
Как я могу это сделать?

решение1

Если вы имеете в виду awkпеременные, то разумнее будет использовать массив. Например:

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

Если ты имеешь ввидуоболочкапеременная, вы можете сделать:

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

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

При использовании bashоболочки можно использовать массив, который можно заполнить:

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

Обратите внимание, что индексы массива в bash(например, в kshчьем дизайне он скопирован) начинаются с 0, а не с 1 (первая строка в ${variable[0]}).

С zsh:

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

(первая строка в $variable[1])

Связанный контент