[英]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.