2013-08-21 37 views

Trả lời

17

Trong trường hợp đơn giản này:

array=($(xdotool search brain)) 

Nếu đầu ra là phức tạp hơn (ví dụ, các đường có thể có khoảng trống trong đó), bạn có thể sử dụng bash BUILTIN mapfile:

mapfile -t array < <(xdotool search brain) 

(help mapfile để biết thêm thông tin)

0

Bạn có thể viết một lệnh khác vào đầu vào mong muốn và đặt đầu vào được nói vào một mảng. Vì vậy, bạn sẽ dẫn đầu ra từ lệnh đầu tiên đến lệnh toArray của bạn. Sau đó thực hiện những gì bạn cần với đầu ra toArray.

4
declare -a myarr # declare an array 
myarr=($(grep -v "Defaulting" $(xdotool search brain) | awk '{printf $1" "}')) # Fill the array with all the numbers from the command line 
echo ${myarr[*]} # echo all the elements of the array 

HOẶC

echo ${myarr[1]} # First element of the array 
+0

'grep -v' là vô hại nhưng không cần thiết: dòng đó được gửi tới' stderr', chứ không phải 'stdout'. Bạn không nên sử dụng 'printf' trong awk khi bạn có nghĩa là' in' cho cùng một lý do bạn không nên làm điều đó trong C: có thể có một phần trăm trong chuỗi. – rici

+0

Câu trả lời này hoạt động rất độc đáo, cảm ơn! – dmohr

Các vấn đề liên quan