Как спать в течение 1 секунды между каждой командой xargs? Например, если я выполняю ps aux | awk '{print $1}' | xargs -I {} echo {} Я хочу, чтобы оболочка спала в течение 1 секунды между каждым echo. Как я могу изменить команду оболочки? Ответ 1 Вы можете использовать следующий синтаксис: ps aux | awk '{print $1}' | xargs -I % sh -c '{ echo %; sleep 1; }' Будьте осторожны с пробелами и точками с запятой. После каждой команды между скобками требуется точка с запятой (даже после последней). Ответ 2 Замените echo на некоторую оболочку script с именем sleepecho, содержащую #!/bin/sh sleep 1 echo $* Ответ 3 Если ваш awk поддерживает его: ps aux | awk '{ system("sleep 1"); print $1 }' | xargs -I {} echo {}q или пропустите awk и xargs вообще ps aux | while read -r user rest; echo $user sleep 1; done
Ответ 1 Вы можете использовать следующий синтаксис: ps aux | awk '{print $1}' | xargs -I % sh -c '{ echo %; sleep 1; }' Будьте осторожны с пробелами и точками с запятой. После каждой команды между скобками требуется точка с запятой (даже после последней).
Ответ 2 Замените echo на некоторую оболочку script с именем sleepecho, содержащую #!/bin/sh sleep 1 echo $*
Ответ 3 Если ваш awk поддерживает его: ps aux | awk '{ system("sleep 1"); print $1 }' | xargs -I {} echo {}q или пропустите awk и xargs вообще ps aux | while read -r user rest; echo $user sleep 1; done