2013-08-21 12 views

Odpowiedz

17

W tym prostym przypadku:

array=($(xdotool search brain)) 

Jeśli wyjście było bardziej skomplikowane (na przykład, linie mogą mieć przestrzenie w nich), można użyć bash wbudowane mapfile:

mapfile -t array < <(xdotool search brain) 

(help mapfile, aby uzyskać więcej informacji)

0

Można napisać inne polecenie, oczekując danych wejściowych i wstawia to wejście do tablicy. Tak więc możesz wyprowadzić dane wyjściowe z pierwszego polecenia do komendy toArray. Następnie wykonaj to, co musisz, dzięki wyjściu 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 

OR

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

'grep -v' jest nieszkodliwy, ale niepotrzebny: linia jest wysyłana do' stderr', a nie 'stdout'. Nie powinieneś używać 'printf' w awk, gdy masz na myśli' print' z tego samego powodu, dla którego nie powinieneś tego robić w C: w łańcuchu może być procent. – rici

+0

Ta odpowiedź działa bardzo ładnie, dzięki! – dmohr

Powiązane problemy