Let's see...
- SIGPIPE is sent to the process when it tries to write to a pipe with no connected readers
- mkfs -t fstype is just a wrapper that spawns the appropriate mkfs.fstype
- It works fine on the command line
I tried the script myself using
mkfs -t ext2 /dev/fd0 and it worked fine. Messages were output to
STDERR but no problem whatsoever. I don't have xfs so I can't test it under your conditions, but perhaps you can test the script under mine and see what happens.
If it works fine, my guess is that mkfs.xfs expects some kind of interaction with the user (you mentioned a condition where --force was necessary) and it dies because it's not connected to a terminal.
If it still does not work, experiment:
- Is the error code still the same?
- What happens using another device?
- What happens using an illegal device on purpose?
- What happens using anothe filesystem type?
- And with an illegal filesystem type?
- What happens with another command?
- Does a shell line like echo `your command` work?
And so on. By observing (hopefully) different behaviours,
it should be possible to determine what triggers the problem.
Hope this helps!
-- TMTOWTDI