A buggy program
Consider the following (contrived) program1 which starts a background process to create a file and then waits while the background process is still running before checking to see if the file exists:
#!/bin/sh # Make sure file doesn't exist. rm -f file # Create file in a background process. touch file & # While there is a touch process running... while ps -C "touch" > /dev/null do # ... wait one second for it to complete. sleep 1 done # Check if file was created. if [ -f file ] then echo "Of course it worked." else echo "Huh? File wasn't created." # Wait for background tasks to complete. wait if [ -f file ] then echo "Now it's there!" else echo "File never created." fi fi # Clean up. rm -f file
Naturally, it will always output
"Of course it worked.",
right? Run it in a terminal yourself to confirm this.
But I claimed this program is buggy; there's more going on.