Mit eval auf eine Zeichenfolge, die einen Befehl enthält, der eine Funktion ohne Probleme funktioniert definiert:Warum funktioniert `eval` nicht in meiner Schleife?
$ eval "p4() { echo 4; }"
$ p4
4
Allerdings, wenn ich es so tun, es funktioniert nicht mehr:
$ echo 'p3() { echo 3; }' | while read line ; do eval "$line"; done
$ p3
-bash: p3: command not found
Warum funktioniert diese Arbeit?
Ich bin mir nicht sicher, ob du mit 'eval' herumspielen solltest, wenn du noch keine Subshells verstehst. – chepner