變數自動分配

變數自動分配

透過使用dspmq | awk -F '[()]' '{print $2}'我將獲得多行輸出。所以我想將第一行輸出視為 a 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)}'
)"

如果使用bashshell,您可以使用一個可以填入的陣列:

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

請注意,中的陣列索引bash(就像ksh它複製的設計一樣)從 0 而不是 1(中的第一行${variable[0]})開始。

zsh

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

(第一行$variable[1]

相關內容