Например, если я исполнюКак спать в течение 1 секунды между каждой командой xargs?
ps aux | awk '{print $1}' | xargs -I {} echo {}
Я хочу, чтобы сон оболочки в течение 1 секунды между каждым echo
.
Как я могу изменить команду оболочки?
Например, если я исполнюКак спать в течение 1 секунды между каждой командой xargs?
ps aux | awk '{print $1}' | xargs -I {} echo {}
Я хочу, чтобы сон оболочки в течение 1 секунды между каждым echo
.
Как я могу изменить команду оболочки?
Вы можете использовать следующий синтаксис:
ps aux | awk '{print $1}' | xargs -I % sh -c '{ echo %; sleep 1; }'
Будьте осторожны с пробелами и точкой с запятой, хотя. После каждой команды между скобками требуется точка с запятой (даже после последней).
Заменить echo
какой-скрипт с именем sleepecho
, содержащего
#!/bin/sh
sleep 1
echo $*
Если 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
Что делать, еслиМне нужно использовать некоторую $ VARIABLE внутри внутренней оболочки? Он не наследует его по умолчанию. –
Я думаю, что он наследует его. Например: 'export a = abc', а затем используйте 'echo $ a%' вместо 'echo%'. – kamituel
Коллега указал мне, что вы можете передать один вызов xargs другому, что удобно, если у вас есть команда, которая сложнее поставить между одинарными кавычками: 'psql -c" select foo from bar "| xargs -I% sh -c '{echo%; сон 1; } '| xargs -L1 -I {} curl -X POST -H "Content-Type: application/json" -d '{ "код": "123", "foo": "{}" }' https: //myapi.com/baz "' – cdf