Tôi đang cố gắng làm một cái gì đó đơn giản tuy nhiên tôi không chắc làm thế nào để đạt được mục tiêu của mình ở đây.
Tôi đang cố gắng trích xuất các giá trị: USER, TTY và TỪ được đưa ra bởi w
lệnh trên bàn điều khiển. Trong bash, tôi đang cố gắng đưa đầu ra này và đưa các giá trị này vào một mảng nhiều chiều (hoặc chỉ là một mảng với dấu phân cách không gian).
#!/bin/bash
w|awk '{if(NR > 2) print $1,$2,$3}' | while read line
do
USERS+=("$line")
echo ${#USERS[@]}
done
echo ${#USERS[@]}
Tôi đã tìm đường đến điểm đọc các giá trị theo từng dòng trong một mảng tuy nhiên tôi dường như không thể lấy giá trị mảng USERS ra khỏi phạm vi của vòng lặp while. Nó in các giá trị 1,2,3,4 và sau đó 0 sau vòng lặp. Mỗi ví dụ tôi đọc họ sử dụng biến ngoài phạm vi hoàn toàn tốt nhưng tôi dường như không thể.
while read col1 col2 col3 _; do ...; done < <(w)