2013-03-01 7 views

Antwort

30

können Sie folgende Syntax verwenden: obwohl

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

mit Leerzeichen und Semikolons vorsichtig. Nach jedem Befehl in Klammern wird ein Semikolon benötigt (auch nach dem letzten).

+0

Was soll ich tun, wenn Ich brauche etwas $ VARIABLE in der inneren Schale? Es erbt es standardmäßig nicht. –

+0

Ich denke, es erbt es. Ein Beispiel: 'export a = abc' und dann 'echo $ a%' anstelle von 'echo%'. – kamituel

+0

Ein Mitarbeiter wies darauf hin, dass Sie einen Xargs-Aufruf in einen anderen leiten können, was praktisch ist, wenn Sie einen Befehl haben, der schwieriger zwischen einfache Anführungszeichen zu setzen ist: 'psql -c" foo aus der Leiste auswählen "| xargs -I% sh -c '{echo%; Schlaf 1; } '| xargs -L1 -I {} curl -X POST -H "Inhaltstyp: application/json" -d '{ "code": "123", "foo": "{}" }' "https: //myapi.com/baz "' – cdf

0

ersetzen echo durch ein Shell-Skript namens sleepecho enthält

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

Wenn Ihr awk unterstützt:

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

oder überspringen awk und xargs insgesamt

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