Ich kann grep
die Ausgabe von jobs
und ich kann grep
die Ausgabe von a function
. Aber warum kann ich die Ausgabe nicht abrufen, jobs
wenn sie in einer Funktion enthalten ist?
$ # yes, i can grep jobs
$ jobs
[1]+ Running vim
[2]+ Stopped matlab
$ jobs | grep vim
[1]+ Running vim
$ # yes, of course i can grep a function
$ type mockjobs
mockjobs is a function
mockjobs ()
{
echo '[1]+ Running vim banjo'
}
$ mockjobs | grep vim
[1]+ Running vim banjo
$ # now put those two together and surely I can grep???
$ type realjobs
realjobs is a function
realjobs ()
{
jobs
}
$ realjobs | grep vim
$ # Nope, WTF?
$ bash --version
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)
$ # funny though, redirection works just fine:
$ tmpfile=$(mktemp); realjobs > $tmpfile; grep vim $tmpfile; rm $tmpfile
[1]+ Running vim
Ich sehe keinen Fehler in der Bash-Liste, aber vielleicht habe ich ihn verpasst? Es gibt einen Hinweis auf ein Problem in Bash 2.02, wenn jobs
es Teil einer Pipeline ist, aber nichts Neues und in einer Funktion, die ich finden kann.
Was fehlt mir hier?
echo "$(realjobs)" | grep vi
funktioniert auch.function
.function testjobs(){jobs | grep vi}
undfunction testrealjobsgrep(){realjobs | grep vi}
.Die Testjobs können funktionieren, aber der Testrealjobsgrep kann nicht funktionieren.Antworten:
Eric Blake antwortete auf der Bash-Bugs-Mailingliste:
quelle