I've been using Linux as my main driver for a couple of years now but I didn't know the list of reserved file name characters is so short.
I didn't believe '*' is allowed. That alone is so error-prone, it's insane. Backslash is allowed too - how do you escape that? Sometimes I think they giggled while writing the specs.
I think it would continue even after it's own deletion as the binary is already loaded into memory, so process is not dependent on the file system. Still doubt that it'll complete successfully. Most likely the system crashes in the middle.
In Unix/Linux, a removed file only disappears when the last file descriptor to it is gone. As long as the file /usr/bin/rm is still opened by a process (and it is, because it is running) it will not actually be deleted from disk from the perspective of that process.
This also why removing a log file that's actively being written to doesn't clear up filesystem space, and why it's more effective to truncate it instead. ( e.g. Run > /var/log/myhugeactivelogfile.log instead of rm /var/log/myhugeactivelogfile.log)
Sometimes you can even use this to recover an accidentally deleted file, if it's still held open in a process. You can go to /proc/$PID/fd, where $PID is the process ID of the process holding the file open, and find all the file descriptors it has in use, and then copy the lost content from there.
Since you forgot to add - - preserve-root
It won't go too far. But at some point the system wants to load a file that is deleted and the kernel will panic. System crash. Delete incomplete. But rest assured, the important stuff is gone.
rm doesn't remove things from memory, and binaries as small as rm can typically be entirely loaded into memory while running. Programs typically only run from memory, not the disk directly.