2013-03-01 15 views

Odpowiedz

30

Można użyć następującej składni:

ps aux | awk '{print $1}' | xargs -I % sh -c '{ echo %; sleep 1; }' 

Bądź ostrożny ze spacjami i średnikami chociaż. Po każdym poleceniu w nawiasach wymagany jest średnik (nawet po ostatnim).

+0

Co należy zrobić, jeśli Muszę użyć jakieś $ VARIABLE wewnątrz wewnętrznej powłoki? Domyślnie nie dziedziczy. –

+0

Myślę, że to odziedziczy. Na przykład: "export a = abc", a następnie użyj "echo $ a%" zamiast "echo%". – kamituel

+0

Współpracownik wskazał mi, że możesz podłączyć jedno wywołanie xargs do innego, co jest przydatne, jeśli masz komendę, która jest trudniejsza do umieszczenia między pojedynczymi cudzysłowami: 'psql -c" wybierz foo z paska "| xargs -I% sh -c '{echo%; spać 1; } "| xargs -L1 -I {} curl -X POST -H "Content-Type: application/json" -d '{ "code": "123", "foo": "{}" } "" https: //myapi.com/baz "' – cdf

0

Wymień echo przez jakiś skrypt powłoki o nazwie sleepecho zawierającej

#!/bin/sh 
sleep 1 
echo $* 
0

Jeśli awk wspiera go:

ps aux | awk '{ system("sleep 1"); print $1 }' | xargs -I {} echo {}q 

lub pominąć awk i xargs całkowicie

ps aux | while read -r user rest; 
    echo $user 
    sleep 1; 
done