簡體   English   中英

Shell Bash-將Multilne字符串拆分為數組

[英]Shell Bash - Split Multilne String into Array

我正在嘗試獲取一個包含每個字符串行作為元素的數組...

stringy=$(ls -l | awk '{print$3,$6,$7,$8,$9}'| grep "$USER")

declare -a myarray=()

IFS="\n" read myarray <<< "$stringy"

echo "${myarray[0]}"
echo "${myarray[1]}"
echo "${myarray[2]}"

for line in "${myarray[@]}"; do
    echo "$line"
done

字符串看起來像這樣:

brunor Nov 17 17:38 22735
brunor Nov 17 15:38 5391
brunor Nov 17 15:38 5405
brunor Nov 17 15:38 5444

(......)

該代碼即使循環也僅輸出第一個元素(0):

>brunor Nov 17 17:38 22735
>
>
>brunor Nov 17 17:38 22735

主要問題是您將myarray作為常規變量而不是數組讀取。 使用readarray代替:

readarray -t myarray <<< "$stringy"

其他問題包括:

  • IFS設置為字母“ n”和反斜杠,而不是換行符
  • read默認為讀取單行,而不考慮IFS
  • echo是檢查變量內容的不好方法,因為它模棱兩可( declare -p myarray會立即顯示問題)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM