Na przykład, jeśli wykonamJak spać przez 1 sekundę między każdym poleceniem xargs?
ps aux | awk '{print $1}' | xargs -I {} echo {}
chcę niech sen powłoki na 1 sekundę pomiędzy każdym echo
.
Jak mogę zmienić polecenie powłoki?
Na przykład, jeśli wykonamJak spać przez 1 sekundę między każdym poleceniem xargs?
ps aux | awk '{print $1}' | xargs -I {} echo {}
chcę niech sen powłoki na 1 sekundę pomiędzy każdym echo
.
Jak mogę zmienić polecenie powłoki?
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).
Wymień echo
przez jakiś skrypt powłoki o nazwie sleepecho
zawierającej
#!/bin/sh
sleep 1
echo $*
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
Co należy zrobić, jeśli Muszę użyć jakieś $ VARIABLE wewnątrz wewnętrznej powłoki? Domyślnie nie dziedziczy. –
Myślę, że to odziedziczy. Na przykład: "export a = abc", a następnie użyj "echo $ a%" zamiast "echo%". – kamituel
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